这感觉像是一个愚蠢的问题,但是我怎样才能在一个字符串中找到一个字符串? NSArray?

我尝试使用

[array indexOfObjectIdenticalTo:myString]

但这需要刺痛具有相同的地址。

有人对如何执行此操作有任何提示吗?

有帮助吗?

解决方案

你想 indexOfObject:方法,它通过向数组中的每个对象发送 isEqual:消息来查找对象。 / p>

其他提示

彼得的回答是正确的。

另外一个说明;如果数组中有大量的字符串, -indexOfObject:将进行线性搜索。这可能被证明是一个性能瓶颈,您应该考虑使用不同的容器;可能是NSSet或NSDictionary(取决于字符串的含义)。

另一个问题是,如果字符串都相对相似和/或相对较长。

当然,在使用分析工具来证明您遇到性能问题之前,不要费心优化任何事情。

您可以使用NSOrderSet作为容器,NSOrderedSet类参考中的over视图如下:

  

NSOrderedSet及其子类NSMutableOrderedSet将编程接口声明为有序的对象集合。

     

NSOrderedSet为不同对象的静态集声明编程接口。您>在创建静态集合条目时建立静态集合,然后可以对条目进行修改。另一方面,NSMutableOrderedSet为>动态不同对象集声明了一个编程接口。动态—或可变—集允许随时添加和删除条目>,根据需要自动分配内存。

     

当元素的顺序很重要时,您可以使用有序集作为数组的替代方法>并且在测试对象是否包含在集合中时的性能是一个考虑因素— >测试数组的成员资格比测试集合的成员资格要慢。

访问 http:// developer。 apple.com/library/mac/#documentation/Foundation/Reference/NSOrderedSet_Class/Reference/Reference.html

包含对象:

返回一个布尔值,指示给定对象是否存在于数组中。

  • (BOOL)containsObject:(id)anObject 参数 对象 一个物体。

返回值如果数组中存在对象,则为 YES,否则为 NO。

讨论

此方法通过发送 isEqual 来确定数组中是否存在对象:向数组的每个对象发送消息(并将 anObject 作为参数传递给每个 isEqual:信息)。

申报于

NSArray.h

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top