代码之家  ›  专栏  ›  技术社区  ›  dpigera

iPhone:如何同步2个nsmutableArrays的内容?

  •  1
  • dpigera  · 技术社区  · 16 年前

    我现在有一个存储视频对象集合的NSmutableArray。

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

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

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

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

    (就我个人而言,我不希望遍历两个列表中的每一项)

    2 回复  |  直到 16 年前
        1
  •  0
  •   rano    16 年前

    假设您只添加和删除视频,则可以使用两个不可变字典,一个用于删除,另一个用于添加视频。 添加视频时,向addDictionary添加一个条目,删除视频时,首先检查它在addDictionary中是否显示为条目,如果显示为条目,则将其删除,否则将向delDictionary添加一个条目。

        2
  •  0
  •   Georg Fritzsche    16 年前

    你可以用 -removeObjectsInArray: 如果你实施了 isEqual: 和 hash 明智地:

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

    但是请注意,使用这种数据,字典或集合会更自然。

    推荐文章