我有一个填充了字符串对象的NSMutableArray
。为了简单起见,我们会说对象是一个人,每个人对象都包含有关该人的信息。NSArray的比较与NSMutableArray中添加三角洲对象的NSMutableArray
因此我会被填充了人的对象一个NSMutableArray:
person.firstName
person.lastName
person.age
person.height
等。
数据的最初来源是一个网络服务器,当填充我的应用程序加载并完成它的初始化与服务器。我的应用程序定期轮询服务器以获取最新的名称列表。
目前我创建的结果集的NSArray
,排空NSMutableArray
,然后重新填充销毁NSArray
对象之前的NSMutableArray
与NSArray
结果。
这似乎效率不高我上了几级,并且还送给我一个问题,失去了表行的引用,我可以解决,但这样做可能会创造更多的工作,为自己。
的效率似乎是我应该能够比较两个阵列和一个过滤NSArray
结束。然后我可以将过滤后的集合添加到NSMutableArray
。这意味着我可以简单地将新数据附加到NSMutableArray
而不是将所有内容全部丢出并重新填充。
相反,如果有需要从NSMutableArray
删除记录我需要做反向相同的过滤器看到的。
是否有任何方法可以以更高效的方式执行此操作?我是否忽略了文档中的某些地方提到了一种更简单的技术?
我有一个问题,当我清空NSMutableArray
和重新填充在任何引用的表失去了选择的行状态。我可以跟踪它并重新选择它,但我的理论是,使用某种形式的比较和添加对象并删除对象而不是在一个块中处理整个数组可能意味着我保留了我的行参考(假设该项不是当然删除)。
任何建议或帮助非常感谢。
更新
难道是一样快做一个快速列举了每一个比较,因为我去的每个项目?这似乎是一个昂贵的操作,但与上次快速列举代码,它可能是相当有效...
解决方案
我结束了Abizem的建议下去。在处理大量数据时,创建数组的可变副本和对象的副本似乎比使用sooth的解决方案稍快一些。两者都工作得很好,我通过使用可变副本方法获得了更多优势。话虽如此,但它确实让我的眼睛看到了NSSet,而我之前从未看过。
感谢您的反馈意见。
为什么不测试它,看看?不要过早地优化。 – 2010-03-11 05:08:21
在这个过程中:-)我会更新我的发现*但*如果有人已经这样做,并知道......好吧...... :-) – Hooligancat 2010-03-11 05:11:50