0

[NSArray containsObject] isEqual を使用します。isEqual デフォルトはアドレスです。

[NSArray containsObject] が参照に基づいているかどうかを知りたいとしますか? したがって、オブジェクトと同等ではなく、その実際のオブジェクトが配列内にあるかどうかを知りたいのです。

コアデータオブジェクトを比較するために使用したいと思います。コア データ オブジェクトが削除されて逆参照される可能性があり、それを参照する要素を含むすべての配列がどうなるのだろうかと思います。

4

1 に答える 1

2

isEqual デフォルトはアドレス

また、その場合、何か問題はありますか?

アドレスを使用しないisEqualオブジェクトを格納したいようですが、このチェックにはアドレスを使用しますよね?

はありません-[containsObjectIdenticalTo:]が、-[indexOfObjectIdenticalTo:];があります。それが NSNotFound 以外を返す場合、それは含まれています。

if ([anArray indexOfObjectIdenticalTo:anObject] != NSNotFound) {
}

NSArray リファレンス ドキュメントが明らかにしているように:

オブジェクト アドレスが同じ場合、オブジェクトは同一と見なされます。

およびその他のコレクションには、まさにこの目的のために存在する一連のIdenticalメソッドがあります。NSArray

于 2012-10-30T23:56:14.230 に答える