【发布时间】:2016-02-14 08:10:44
【问题描述】:
任务:
从NSArray 返回一个对象,该对象是类的实例,其名称作为函数的参数给出。
现在我有这个功能:
+ (id)objectOfType:(NSString *)name fromArray:(NSArray *)array
{
for (NSObject* instance in array)
{
if ([instance.className isEqualToString:name])
return instance;
}
return nil;
}
但是,假设我可以通过NSArray 上的这个简单方法调用将对象数组转换为对象的类名数组
[array valueForKeyPath:@"className"]
难道不应该有更简洁的方法来检索具有指定类名的对象吗..?
【问题讨论】:
-
取决于你想做什么。数组是一个排序列表,当前实现返回第一个匹配项。当然可能还有更多。它可以基于带有谓词过滤器的集合来完成,但这将返回所有匹配项的子集或子数组。你总是在寻找第一场比赛还是全部?
-
任何匹配(如代码示例中所示)都可以 - 干杯
-
在这种情况下,我认为您的实现适合目的。我认为创建和解析谓词很可能比上述方法慢得多,至少对于合理大小的数组(几百个对象)而言。
标签: objective-c cocoa nsarray nsobject