例子:
我有一个包含40个对象的NSArray。如何最有效地返回仅与另一个NSArray中指定数字相等的索引相同的对象(例如{0,27,36})?
这里可以使用谓词吗?还是有更简单和高效的方法?
例子:
我有一个包含40个对象的NSArray。如何最有效地返回仅与另一个NSArray中指定数字相等的索引相同的对象(例如{0,27,36})?
这里可以使用谓词吗?还是有更简单和高效的方法?
有一个方法 (objectsAtIndexes) 可以返回原始数组中指定的索引,但它需要一个 NSIndexSet 作为参数,并且没有内置的方法将您的索引数组转换为索引集。好消息是,您可以通过以下简短的循环生成索引集:
NSMutableIndexSet indexes = [NSMutableIndexSet indexSet];
for (NSNumber * number in indexArray)
{
[indexes addIndex:[number intValue]];
}
return [originalArray objectsAtIndexes:indexes];
这种方法是否比直接遍历原始数组更有效?我不确定。你需要对你的应用进行性能分析才能确定。
我记得曾经读过一次,虽然我不能说在哪里,但它却深深地印在了我的脑海中。如果这是你需要多次执行的操作,并且数组相当大,那么有一种更有效的方法。你可以从该数组创建一个新的字典,其中每个条目都具有索引号作为键,数组项作为值。你只需创建一次字典,因此一次性完成了所有的繁重工作。然后,每次您需要访问特定索引处的值时,只需请求 valueForKey:@"indexNumber"。但我从未有过这样的需求,所以我从未测试过它是否在长期运行中更有效...这只是一个想法。