[英]How to reference to a Objective-C class attribute?
我正在开发一个具有很多字段视图的应用程序。 我一直在逐个操作它们,因为我不知道如何引用类属性来动态保存它们。
现在我有很多代码来操作单个字段...例如:
self.rowField.delegate = self;
NSArray *collectionNames = @[@"personTypeCategories", @"personTypes", @"genders", @"rows", @"seats", @"seatingOthers", @"restraintSystems", @"helmetUses"];
if ([collectionName isEqualToString:@"personTypeCategories"]) {
[self loadDefaultForCollection:@"personTypeCategories" toField:self.personTypeCategoryField withKey:@"PersonTypeCategoryID" defaultValue:self.editingPerson.typeCategoryKey];
}
if (textField == self.rowField) {
[self showCollection:@"rows" withIDColumn:@"RowID" withField:textField];
return NO;
}
当我有一个符合我们保存信息标准的新字段,然后将其发布到服务器时,我需要为每个字段创建这些行,现在我想通过创建这样的数组来动态地创建它:
- (void)loadViewConfiguration {
self.viewElements = [[NSMutableArray alloc] init];
[self.viewElements addObject:@{
@"restMethod" : @"personTypeCategories",
@"key" : @"PersonTypeCategoryID",
@"field" : self.personTypeCategoryField,
@"enabled" : @YES,
@"modelAttr" : &self.editingPerson.typeCategoryKey
}];
}
问题出在modelAttr中,我需要有类属性引用,以便以后去修改或获取它。
另一种选择可能是我可以像在PHP中那样动态调用类属性,例如:
$attr = "name";
$editingPerson->{$attr} = "Omar";
谢谢您的帮助。
我不知道你可以为此目的使用键值编码。
为了实现这一点,我所做的只是保存属性的名称,然后通过使用以下方式获取值:
[classInstance valueForKey:elem[@"modelAttr"]];
一个例子:
for (NSDictionary *elem in self.viewElements) {
if ([collectionName isEqualToString:elem[@"restMethod"]]) {
[self loadDefaultForCollection:elem[@"restMethod"] toField:elem[@"field"] withKey:elem[@"key"] defaultValue:[self.editingPerson valueForKey:elem[@"modelAttr"]]];
}
}
感谢@matt的建议
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.