iphone:我如何同步2个NSMutableArrays的内容?

时间:2010-09-08 08:15:13

标签: iphone objective-c algorithm synchronization nsmutablearray

我目前有一个NSMutableArray,它存储一组Video对象。

每个视频对象都有一个ID和TITLE。

我还有另一个通过解析XML API调用生成的视频对象的NSMutableArray。

当用户点击“同步”按钮时,我希望系统能够找出所需的最少操作数量(删除和添加视频)以使两个列表同步。

这样做的最佳方式是什么? Objective-C是否定义了这样做的任何方法?如果没有,我可以实现一种特殊的算法吗?

(就个人而言,我宁愿不循环遍历两个列表中的每一项)

2 个答案:

答案 0 :(得分:0)

假设您只是添加和删除视频,您可以拥有两个NSMutableDictionaries,一个用于删除,另一个用于添加视频。 当您添加视频时,您向ADDDictionary添加一个条目,当您删除一个条目时,首先检查它是否在ADDDictionay中显示为条目,如果是,则删除它,否则您将向DELDictionary添加条目。

答案 1 :(得分:0)

如果您明智地实施isEqual:hash,则可以使用-removeObjectsInArray:来获取差异:

NSMutableArray *old = ...;
NSMutableArray *new = ...;

NSMutableArray *toAdd    = [new mutableCopy];
NSMutableArray *toDelete = [old mutableCopy];
[toAdd    removeObjectsInArray:old];
[toDelete removeObjectsInArray:new];

但请注意,使用此类数据时,字典或集合会更自然。