【发布时间】:2014-03-01 16:26:05
【问题描述】:
假设您有一个具有属性“testProperty”的类“Foo”。目的是将属性名称(不是值)作为NSString。这个问题可能与 Get property name as a string 重复。但这些答案对我没有帮助,因为:
- 我不需要所有属性。我只需要一个特定的。
- 对于
NSStringFromSelector(@selector(prop))- 无论如何你必须输入字符串。
假设我有一个类似
的函数- (NSString *)propertyToString:(id)propertyOfObject
在这种情况下,我可以使用,例如,用于排序
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:[self propertyToString:foo.testProperty] ascending:NO];
所以最后,代码是干净的。
【问题讨论】:
-
您说-“我想要一个特定的,而不是全部。”...嗯..如果您不知道它的名称,您怎么知道您想要哪个特定的?如果你知道的话,那就自己创建字符串...?
-
您的问题与您链接的问题重复。只需按照您链接的答案进行操作,并且在遍历所有属性时,只需存储您想要的一个并忽略其余的。
-
@Michal,我想让我的代码干净,这就是我不想使用字符串常量的原因。
-
@razor28 隐藏您正在使用的属性的名称并不干净。想象一下在您切换到不同项目后接管您的代码的人。他/她是否会立即知道您的代码中发生了什么,如果您实际上将属性名称合并到字符串中,除非它实际上在 lldb 中运行,否则无法看到?
-
现在很清楚这个问题在问什么,这个问题已经更新了一个实际的例子。请重新打开。
标签: ios objective-c properties introspection objective-c-runtime