私はNSMutableArray
oldArray
を持っています。さて、ある時点で、このNSMutableArray
オブジェクトは、NSMutableArray
と更新されます。これは、前のNSMutableArray
と同じ、またはより少ない、または同じ数の要素を持つことがあります。NSArray/NSMutableArray変更のインデックスを見つける
古いアレイと新しいアレイとを比較して変更したいと考えています。私が望むのは、2つのNSArray
の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"古いものと新しいNSMutableArray
からremovedArray
とaddedArray
-
したがって、
removedArray = {1,4}; and addedArray = {1,4,5};
は、私はこれら二つの配列を取得するための効率的な方法をしたいです。ありがとう!問題があまり理解できない場合、私はより多くの情報を提供したいと思います。
編集1
私は私がこれを使用したいのかを説明している場合、おそらくそれがより明確になります。
私はテーブルビューがロードされる後にユーザが削除行が出て行くと、新しい行がインチテーブルビューの店に来る見ることができるように、アニメーションを持つメソッドinsertRowsAtIndexPaths
とremoveRowsAtIndexPaths
とのUITableViewを更新しているためにこれを使用しています実際にどのようなユーザーが追加または削除できるお気に入り要素。だからいくつかのお気に入りを追加し、いくつかを削除した後。ユーザーがお気に入りのテーブルビューに戻ると、アニメーションが表示されます。
編集2
は、この先に言及している必要がありますが、古いものと新しい配列の両方の要素を昇順になります。削除または追加事項のインデックスのみ。注文は変更できません。例。 {@ "b"、@ "a"、@ "c"、@ "d"}は配列にすることはできません。
まあ、私は古いとループを使用して新しいアレイとIF条件を反復処理しようとしているが、それは本当に厄介とバギーなっています。これはいくつかのケースでは動作し、他のケースでは動作しません。私は何をしたいのかを緩和するNSMUtableArrayのメソッドがあるかどうか疑問に思っていました。 – aksh1t
追加したり削除したオブジェクトのインデックスが本当に必要ですか?私にとって、これはNSSetのための仕事のように聞こえます。またはそれぞれNSMutableSetセットを統一したり、他のセットからセットを削除したり、交差などを識別したりすることができます。また、配列からそれらを作成することもできます。しかし、あなたは指標を失うだろう。 –
@HermannKlecker - 削除された要素と追加された要素のインデックスは、すべて私が望むものです。それらは 'insertRowsAtIndexPaths'と' removeRowsAtIndexPaths'メソッドを使ってテーブルビュー内のアニメーション用です。 – aksh1t