Instance Method インスタンスメソッド

differenceFromArray:withOptions:

Compares two arrays, with options, to create a difference object that represents the changes between them. 2つの配列を、オプションそれらで比較することで、それらの間の変化を表すある差異オブジェクトを作成します。

Declaration 宣言

- (NSOrderedCollectionDifference<ObjectType> *)differenceFromArray:(NSArray<ObjectType> *)other 
                                                       withOptions:(NSOrderedCollectionDifferenceCalculationOptions)options;

Discussion 議論

The difference method creates the difference object by comparing objects within the arrays with the isEqual: method. この差異メソッドは、配列それらの内部のオブジェクトをisEqual:メソッドで比較することによって差異オブジェクトを作成します。

The options allow you to choose to omit insertion or removal references to the change objects within the difference object. You can also choose to infer moves when computing the difference, which provides an associatedIndex within the change objects that indicates the index in the array where the object moved from. オプションは、変化オブジェクトへの挿入または除去参照を差異オブジェクト内で省くことをあなたに選ばせます。あなたはまた、差異を計算する時に移動を推論することを選べます、それは変化オブジェクトそれら内でのあるassociatedIndexを提供します、それは、そこからそのオブジェクトが移動したところの、その配列の中のインデックスを指し示します。

The following example computes the difference between two arrays, inferring moves between them: 以下の例は、2つの配列の間の差異を、それらの間の移動を推論して計算します:


NSArray *original = @[@"Red", @"Green", @"Blue"];
NSArray *modified = @[@"Red", @"Blue", @"Green"];


NSOrderedCollectionDifference *diff = [original
                                       differenceFromArray:modified
                                       withOptions:NSOrderedCollectionDifferenceCalculationInferMoves];




// diff.hasChanges == TRUE
// diff.insertions.count == 1
// diff.removals.count == 1


// Inferring the moves adds an associatedIndex into the change.
NSOrderedCollectionChange* insertion = diff.insertions[0];
// insertion.index == 2
// insertion.associatedIndex == 1


NSOrderedCollectionChange* deletion = diff.removals[0];
// deletion.index == 1
// deletion.associatedIndex == 2

See Also 参照

Comparing with Another Array 別の配列とを比較する