我目前有一个NSMutableArray,它存储一组Video对象。
每个视频对象都有一个ID和TITLE。
我还有另一个通过解析XML API调用生成的视频对象的NSMutableArray。
当用户点击“同步”按钮时,我希望系统能够找出所需的最少操作数量(删除和添加视频)以使两个列表同步。
这样做的最佳方式是什么? Objective-C是否定义了这样做的任何方法?如果没有,我可以实现一种特殊的算法吗?
(就个人而言,我宁愿不循环遍历两个列表中的每一项)
答案 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];
但请注意,使用此类数据时,字典或集合会更自然。