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