我对这门语言很陌生,但对别人有很好的把握。
我想知道如何在目标c中动态访问字段名称属性。
类似的东西:
self.bottomText.text = @"foo";
转到:
NSString *bottomText = @"bottomText";
self[bottomText].text = @"foo";
我可以理解如何设置这样的属性(根据下面的复制标记):
[self setValue:value forKey:@"propertyName"];
但在我看来,它要么必须遵守:
[self.bottomText setValue:@"foo" forKey:@"text"];
这并没有真正解决问题,或类似的事情:
[self setValue:bottomText forKey:property].text = @"foo";
不知道属性是什么。
或者也许:
[self valueForKey:bottomText].text = @"Test";
但没有爱。
这个超级困惑。
答案 0 :(得分:1)
好吧,假设await
是bottomText
(因为它有UILabel
属性...),你可以这样做:
text
或者如果你真的想要它在一行:
SEL selector = NSSelectorFromString(@"bottomText");
UILabel *label = (UILabel *)[self performSelector:selector];
label.text = @"Test";
答案 1 :(得分:1)
我很不确定,我是否理解你的Q正确。但是simle KVC应该可以解决你的问题:
NSString *bottomText = @"bottomText";
[self valueForKey:bottomText].text = @"foo";
或
NSString *property = @"bottomText.text";
[self setValue:@"foo" forKeyPath:property];
此外,self
课程可以实施keyed subscription。