这感觉就像是一个愚蠢的问题,但我怎样才能找到NSArray
中的字符串?
我尝试使用
[array indexOfObjectIdenticalTo:myString]
但这需要刺痛具有相同的地址。
有没有人有关于如何做到这一点的任何提示?
答案 0 :(得分:50)
您希望the indexOfObject:
method通过向数组中的每个对象发送isEqual:
消息来查找对象。
答案 1 :(得分:13)
彼得的回答是正确的。
另外一个说明;如果数组中有大量的字符串,-indexOfObject:
将进行线性搜索。这可能被证明是一个性能瓶颈,您应该考虑使用不同的容器;可能是NSSet或NSDictionary(取决于字符串的含义)。
另一个问题是,如果字符串都相对相似和/或相对较长。
当然,在使用分析工具来证明您遇到性能问题之前,不要费心优化任何事情。
答案 2 :(得分:4)
您可以使用NSOrderSet作为容器,NSOrderedSet类参考中的over视图如下:
NSOrderedSet及其子类NSMutableOrderedSet将编程接口声明为有序的对象集合。
NSOrderedSet为不同对象的静态集声明编程接口。您>在创建静态集的条目时建立静态集的条目,然后不能对这些条目进行修改。另一方面,NSMutableOrderedSet为>动态不同对象集声明了一个编程接口。动态或可变集允许随时添加和删除条目,自动根据需要分配内存。
当元素的顺序很重要时,您可以使用有序集作为数组的替代方法>并且测试对象是否包含在集合中的性能是一个考虑因素 - >对数组成员资格的测试比测试慢成为会员。
答案 3 :(得分:1)
<强> containsObject:强>
返回一个布尔值,指示给定对象是否存在于数组中。
返回值 如果数组中存在anObject,则为YES,否则为NO。
<强>讨论强>
此方法通过向每个数组的对象发送isEqual:消息(并将anObject作为参数传递给每个isEqual:消息)来确定数组中是否存在anObject。
声明
NSArray.h