Objective c 如何在指定索引处返回NSArray中的对象?

Objective c 如何在指定索引处返回NSArray中的对象?,objective-c,nsarray,Objective C,Nsarray,例如: 我有一个40个物体的NSArray。仅返回索引等于另一个NSArray中指定的数字(例如{0,27,36})的对象的最有效方法是什么 这里可以使用谓词吗?或者有更简单有效的方法吗?为什么不迭代索引数组,在数据数组中查找每个索引,用查找对象替换索引 最后,保存索引的数组现在保存对象。如果不想删除索引数组,那么只需创建一个与索引数组大小相同的新数组,并将对象放在那里 你可能在设计上考虑过了,而沦为微观优化的牺牲品。(这是一件坏事。)我记得读过一次,我说不出在哪里,但我的脑海里一直在想,如果这

例如:

我有一个40个物体的NSArray。仅返回索引等于另一个NSArray中指定的数字(例如{0,27,36})的对象的最有效方法是什么


这里可以使用谓词吗?或者有更简单有效的方法吗?

为什么不迭代索引数组,在数据数组中查找每个索引,用查找对象替换索引

最后,保存索引的数组现在保存对象。如果不想删除索引数组,那么只需创建一个与索引数组大小相同的新数组,并将对象放在那里


你可能在设计上考虑过了,而沦为微观优化的牺牲品。(这是一件坏事。)

我记得读过一次,我说不出在哪里,但我的脑海里一直在想,如果这是一件需要做很多次的事情,而且数组相当大,那么有一种更有效的方法。您可以从该数组创建一个新字典,其中每个条目都有索引号的键,值是数组项。你只需要创建一次字典,就可以一次性完成这项艰巨的工作。然后,每次需要访问某些索引中的值时,只需请求valueForKey:@“indexNumber”。但我从来没有这样做的需要,所以我从来没有测试过,如果它是更有效的长期。。。这只是一个想法。

有一个方法()用于从原始数组返回指定的索引,但它需要一个NSIndexSet作为其参数,并且没有一种内置方法将索引数组转换为索引集。另一方面,您可以使用短循环生成索引集,如下所示:

NSMutableIndexSet indexes = [NSMutableIndexSet indexSet];
for (NSNumber * number in indexArray)
{
    [indexes addIndex:[number intValue]];
}
return [originalArray objectsAtIndexes:indexes];

这是否比简单地在原始数组中循环更有效?我不知道。您必须对您的应用程序进行概要分析才能确定。

我只是认为可能有一个简单的单行线(例如NSArray filterbyindex:self.IndexNumbers)。始终可以将此添加为NSArray和NSMutableArray的类别。。。但我不想重新发明轮子(如果它确实存在的话)