Objective c 动态字段属性名称目标C

Objective c 动态字段属性名称目标C,objective-c,Objective C,我对这门语言很陌生,但对其他语言掌握得很好 我想知道如何在objective c中动态访问字段名属性 比如: self.bottomText.text = @"foo"; [self setValue:bottomText forKey:property].text = @"foo"; 前往: NSString *bottomText = @"bottomText"; self[bottomText].text = @"foo"; 我可以理解如何可以像这样设置属性(根据下面的复制标记):

我对这门语言很陌生,但对其他语言掌握得很好

我想知道如何在objective c中动态访问字段名属性

比如:

self.bottomText.text = @"foo";
[self setValue:bottomText forKey:property].text = @"foo";
前往:

NSString *bottomText = @"bottomText";

self[bottomText].text = @"foo";
我可以理解如何可以像这样设置属性(根据下面的复制标记):

但在我看来,要么必须遵循以下原则:

[self.bottomText setValue:@"foo" forKey:@"text"];
这并不能真正解决问题,或者类似于:

self.bottomText.text = @"foo";
[self setValue:bottomText forKey:property].text = @"foo";
不知道什么是财产

或者可能:

[self valueForKey:bottomText].text = @"Test";
但是没有爱


在这一点上我非常困惑

好吧,假设
bottomText
UILabel
(因为它有一个
text
属性…),您可以这样做:

SEL selector = NSSelectorFromString(@"bottomText");
UILabel *label = (UILabel *)[self performSelector:selector];
label.text = @"Test";
或者,如果你真的想把它放在一行中:

[(UILabel *)[self performSelector:NSSelectorFromString(@"bottomText")] setText:@"Test"];

我很不确定,我是否理解你的问题是正确的。但是simle KVC应该可以解决您的问题:

NSString *bottomText = @"bottomText";
[self valueForKey:bottomText].text = @"foo";


另外,
self
类可以实现。

@Drew我不同意。不鼓励使用评论发布自己尝试过的事情、没有奏效的想法或与问题直接相关的任何信息。如果我在评论中看到类似的内容,我可能会发表评论说应该将其添加到问题中。无论如何,我都会投票重新开业。它与链接的帖子有关,但不是重复的。这很公平。只需将其标记为*Edit:*即可用于关闭后的尝试