我有一个NSMutableArray
oldArray
。现在,有一次,这个NSMutableArray
对象被另一个NSMutableArray
更新,其可能具有与先前的NSMutableArray
更多,更少或相同数量的元素。查找NSArray/NSMutableArray更改的索引
我想比较旧阵列和新阵列的变化。我想要的是两个NSArray
s addedArray
和removedArray
它将包含已添加和/或从旧数组中删除元素的索引。
这整个问题会更加明了用一个例子:
oldArray = {@"a",@"b",@"d",@"e",@"g"};
newArray = {@"a",@"c",@"d",@"e",@"f",@"h"};
所以,在这里去除的各目标分别为@“b”和@“G”在索引1和4。并且在索引1,4和5处添加的对象是@“c”,@“f”和@“h”(第一个对象被删除,然后添加)。
因此,
removedArray = {1,4}; and addedArray = {1,4,5};
我希望有一个有效的方式来获得这两个数组 - 从新NSMutableArray
老removedArray
和addedArray
。谢谢!如果问题不能理解,我愿意提供更多信息。
编辑1
也许如果我解释我想用这个东西它会更加明朗。
实际上我使用的是在tableview加载后用方法insertRowsAtIndexPaths
和removeRowsAtIndexPaths
更新UITableView,以便用户可以看到被删除的行出去并且新的行进入。tableview存储用户可以添加或删除的收藏夹元素。所以在添加一些收藏夹并删除一些后,当用户回到收藏夹桌面时,会显示动画。
编辑2
应该提到这较早,但在这两个旧的和新的数组中的元素将在升序排列。只有删除或添加事项的指标。订单不能更改。恩。 {@“b”,@“a”,@“c”,@“d”}不能是数组。
那么,我已经尝试迭代通过旧的和新的数组使用循环,如果条件,但它变得非常混乱和越野车。这适用于某些情况,而不适用于其他情况。我想知道是否有一些NSMUtableArray方法可以缓解我想要做的事情。 – aksh1t
你真的需要添加和删除对象的索引吗?对我来说,这听起来更像是NSSet的工作。或者NSMutableSet分别。你可以统一集合,从另一个集合中删除一个集合,确定相交等。你可以从数组创建它们,反之亦然。但你会放弃指数。 –
@HermannKlecker - 删除和添加的元素的索引是我想要的。这些是使用方法'insertRowsAtIndexPaths'和'removeRowsAtIndexPaths'的tableview中的动画。 – aksh1t