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

iphone:如何同步2个NSMutableArray的内容?,iphone,objective-c,algorithm,synchronization,nsmutablearray,Iphone,Objective C,Algorithm,Synchronization,Nsmutablearray,我目前有一个NSMutableArray,它存储视频对象的集合 每个视频对象都有一个ID和标题 我还有另一个NSMutableArray,它是通过解析XMLAPI调用生成的视频对象 当用户点击“同步”按钮时,我希望系统能够计算出使两个列表同步所需的最小操作数(删除和添加视频) 这样做的最佳方式是什么?Objective-C是否定义了执行此操作的任何方法?如果没有,我能实现一个特殊的算法吗 (就我个人而言,我不想循环浏览两个列表中的每一项)假设您只添加和删除视频,您可以有两个NSMutableDi

我目前有一个NSMutableArray,它存储视频对象的集合

每个视频对象都有一个ID和标题

我还有另一个NSMutableArray,它是通过解析XMLAPI调用生成的视频对象

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

这样做的最佳方式是什么?Objective-C是否定义了执行此操作的任何方法?如果没有,我能实现一个特殊的算法吗


(就我个人而言,我不想循环浏览两个列表中的每一项)

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

如果您明智地实现了
isEqual:
散列
,您可以使用它来获得差异:

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

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

但是请注意,字典或集合会更自然地处理此类数据。

当您说同步时,您的意思是镜像一个数组以使其看起来像另一个数组?或者如何处理数组之间的差异?因此,如果每个数组中都有额外的条目,它们将被复制到另一个数组?第二个选项。i、 如果arrayA有两个arrayB没有的对象,它应该将其复制到arrayB。。。反之亦然。