我有一個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