Ios 如何引用Objective-C类属性?

Ios 如何引用Objective-C类属性?,ios,objective-c,reference,Ios,Objective C,Reference,我正在开发一个应用程序,它有很多领域的视图。我一直在一个接一个地操作它们,因为我不知道如何引用类属性来动态保存它们 现在我有很多行代码来操作一个字段。。。例如: self.rowField.delegate = self; NSArray *collectionNames = @[@"personTypeCategories", @"personTypes", @"genders", @"rows", @"seats", @"seatingOthers", @"restraintSystems

我正在开发一个应用程序,它有很多领域的视图。我一直在一个接一个地操作它们,因为我不知道如何引用类属性来动态保存它们

现在我有很多行代码来操作一个字段。。。例如:

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;
} 
$attr = "name";
$editingPerson->{$attr} = "Omar";
当我有一个新字段,它遵循我们保存信息并稍后将其发布到服务器的标准时,我需要为每个字段创建以下行,现在我希望通过创建如下数组来动态执行此操作:

- (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中那样动态调用类属性,例如:

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;
} 
$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的建议,你知道键值编码吗?以前从未见过,我正在阅读。谢谢@matt。“我要试试看。”马特说,它很管用。谢谢