gpt4 book ai didi

objective-c - 在 Objective-C 中,如何将属性作为参数传递给函数,然后调用 setter/getter 方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:18:13 24 4
gpt4 key购买 nike

代码可能是查看我正在尝试做的事情的最佳方式:

AcInfo.h:

@interface AcInfo : NSManagedObject {
@private
}
@property (nonatomic, retain) NSString *registrationNumber;
@end

AcInfo.m:

@implementation AcInfo
@dynamic registrationNumber;
@end

另一个类.h:

@interface AnotherClass : NSObject {
}
@property (nonatomic, retain) AcInfo *detailItem;
@property (nonatomic, retain) IBOutlet UITextField *registrationNumberTextField;

- (void)setDetailItemValueFromUIElement:(id *)uiElement forAcInfoTarget:(id *)acInfoTarget;
@end

另一个类.m:

@import "AcInfo.h"

@implementation AnotherClass
@synthesize detailItem, registrationNumberTextField;

- (void)viewDidLoad
{
[super viewDidLoad];

registrationNumberTextField.text = @"Test";
// I expect this to set detailItem.registrationNumber to the value of
// registrationNumberTextField.text (Test) but it doesn't change anything!
setDetailItemValueFromUIElement:registrationNumberTextField forAcInfoTarget:detailItem.registrationNumber;
}

- (void)setDetailItemValueFromUIElement:(id *)uiElement forAcInfoTarget:(id *)acInfoTarget
{
if ([(id)uiElement isKindOfClass:[UITextField class]]) {
// This doesn't do anything when it returns!
(NSString *)acInfoTarget = (UITextField *)uiElement.text
return;
}
}

@end

简而言之,我希望acInfoTarget调用中的getter[detailObject registrationNumber]和setter[detailObject setRegistrationNumber] setDetailItemValueFromUIElement: 函数...

最佳答案

您可以使用

按名称设置或读取属性
// setter
NSString *propertyName = @"myProperty";
[object setValue:newValue forKey:propertyName];

// getter
id value = [object valueForKey:propertyName];

不过,这比使用普通的点符号要慢,而且它经常(尽管不总是)是代码设计不当的标志。

另请注意,id 指针类型,因此您实际上可能不是指“(id*)”。

我认为你的代码看起来像这样:

- (void)setDetailItemValueFromUIElement:(id)uiElement forAcInfoTarget:(NSString*)acInfoTarget {
if ([(id)uiElement isKindOfClass:[UITextField class]]) {
NSString *newValue = ((UITextField*)uiElement).text;
[self.detailItem setValue:newValue forKey:acInfoTarget];
}
}

关于objective-c - 在 Objective-C 中,如何将属性作为参数传递给函数,然后调用 setter/getter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7748867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com