私は持っていNSMutableArray
oldArray
ます。ここで、ある時点で、このNSMutableArray
オブジェクトは別の で更新されます。このオブジェクトはNSMutableArray
、前の よりも多い、少ない、または同じ数の要素を持つ可能性がありますNSMutableArray
。
古い配列と新しい配列の変更を比較したい。私が欲しいのは2つNSArray
の saddedArray
でremovedArray
、古い配列に追加および/または削除された要素のインデックスが含まれます。
この問題全体は、例を使用するとより明確になります。
oldArray = {@"a",@"b",@"d",@"e",@"g"};
newArray = {@"a",@"c",@"d",@"e",@"f",@"h"};
したがって、ここで削除されたオブジェクトは、それぞれインデックス 1 と 4 の @"b" と @"g" です。追加されるオブジェクトは、インデックス 1、4、および 5 の @"c"、@"f"、および @"h" です (最初のオブジェクトが削除され、次に追加されます)。
したがって、
removedArray = {1,4}; and addedArray = {1,4,5};
これらの 2 つの配列を効率的に取得する方法がremovedArray
必要addedArray
ですNSMutableArray
。ありがとう!問題があまり理解できない場合は、喜んでさらに情報を提供します。
編集 1
これを何に使いたいのかを説明すると、おそらくより明確になるでしょう。
実際に私がこれを使用しているのは、テーブルビューがロードされた後にメソッドinsertRowsAtIndexPaths
とremoveRowsAtIndexPaths
アニメーションで UITableView を更新することです。これにより、ユーザーは削除された行が出て新しい行が入ってくるのを見ることができます.テーブルビューは、ユーザーができるお気に入り要素を保存します追加または削除します。したがって、いくつかのお気に入りを追加していくつかを削除した後; ユーザーがお気に入りのテーブルビューに戻ると、アニメーションが表示されます。
編集 2
これは前に述べたはずですが、古い配列と新しい配列の両方の要素は昇順になります。削除または追加のインデックスのみが重要です。順序は変更できません。元。{@"b",@"a",@"c",@"d"}を配列にすることはできません。