Objective c 在数组中查找对象的索引/位置,而不遍历其所有内容

Objective c 在数组中查找对象的索引/位置,而不遍历其所有内容,objective-c,ios,Objective C,Ios,以下面的代码为例: NSPredicate *predicateSource = [NSPredicate predicateWithFormat:@"SELF = %d",5]; NSArray *filteredArraySource = [[[self.myArray copy]autorelease] filteredArrayUsingPredicate:predicateSource]; myArray(NSMutableArray)包含100个整数(数字1-100以随机顺序排

以下面的代码为例:

 NSPredicate *predicateSource = [NSPredicate predicateWithFormat:@"SELF = %d",5];
 NSArray *filteredArraySource = [[[self.myArray copy]autorelease] filteredArrayUsingPredicate:predicateSource];
myArray
NSMutableArray
)包含100个整数(数字1-100以随机顺序排列)。我想做的是找出哪个索引包含数字
5
,而不通过数组中的每个对象循环。上面的代码只提取对象并将其放入数组中


有什么建议吗?

您可以使用
索引对象传递测试:
。如果需要使用
NSPredicate
,请在块内调用谓词的
evaluateWithObject:
;否则,只需检查对象的整数值是否为
5

您可以使用
indexOfObject:

我认为有一些方法可以获取索引-您查看了文档吗?我认为NSArray是线性数组的包装器,因此,使用每种方法,您都必须扫描整个数组(独立于谁做的)。对于100个数字数组,这不是一个问题,sobig。那么,如果你有一个以上的项目包含数字“5”,或者更一般的值“X”?幸运的是,在我的情况下,永远不会有重复(每个都是唯一的)。@Kappa:你(几乎可以肯定)错误。<代码> NSArray <代码>是不透明的,但它似乎是哈希表的前端:@ IuluSc.SAR可能不是线性的。但是,开始插入图非常奇怪……看起来像STD C++向量,甚至最坏。无论如何,BST在搜索、搜索和插入方面都会更快地使用<代码> NSMutableArray < /代码>。不要只想把它复制到
NSArray
。谢谢!(6分钟后接受)@sooper你不需要将
NSMutableArray
复制到
NSArray
中就可以了:无论对
NSArray
有效,对
NSMutableArray
也有效。