【发布时间】:2009-07-16 02:02:41
【问题描述】:
我在 Objective C 中有两个数组,我需要找出某个索引是什么,以便将它插入到同一个位置。例如,假设我有一个“名称数组”和一个“年龄数组”。如何找出“名称数组”中的索引“charlie”,以便知道在“年龄”数组中插入他的年龄的位置?
谢谢
【问题讨论】:
标签: objective-c cocoa search nsmutablearray nsarray
我在 Objective C 中有两个数组,我需要找出某个索引是什么,以便将它插入到同一个位置。例如,假设我有一个“名称数组”和一个“年龄数组”。如何找出“名称数组”中的索引“charlie”,以便知道在“年龄”数组中插入他的年龄的位置?
谢谢
【问题讨论】:
标签: objective-c cocoa search nsmutablearray nsarray
-[NSArray indexOfObject:] 似乎是合乎逻辑的选择。
【讨论】:
在 Cocoa 中,并行数组是通往厄运和毁灭的道路。您不能通过 Bindings 有效地使用它们,因此您将不得不编写大量的胶水代码,就好像 Bindings 不存在一样。此外,在您开始实施之前,您可能打算拥有任何未来的 AppleScript/Scripting Bridge 支持。
正确的方法是创建一个具有name 和age 属性的模型类,并拥有该类的单个实例数组。然后,要按名称或年龄查找项目,请使用NSPredicate 过滤数组,并使用indexOfObjectIdenticalTo: 从主数组中的过滤数组中查找每个项目的索引。
indexOfObject: 和indexOfObjectIdenticalTo: 的区别在于前者会发送isEqual: 消息来判断每个对象是否是它要查找的对象,而后者只会查找您传入的特定对象。因此,您可以将indexOfObject: 与不在数组中但等于一个的对象一起使用,以便在数组中找到相等的对象。
【讨论】:
如果您基于字符串进行查找,您可能也只想使用 NSDictionary。
【讨论】: