0

addUser というメソッドを使用してオブジェクトを追加する selectedUsers という NSMutableArray があります。追加されるオブジェクトは、ほとんどの場合、タイプ PLManagedUser (コア データ管理オブジェクト) ですが、オブジェクトが文字列の場合もあります。いずれにせよ、配列に既にオブジェクトが含まれている場合は、それを配列に追加したくありません。コードは次のとおりです。

- (void)addUser:(id)user withTitle:(NSString *)title {

    if (![_selectedUsers containsObject:user]) {
        [_selectedUsers addObject:user];
    }
}

上記の方法を使用して同じユーザーを連続して追加しようとすると、containsObject がそれをキャッチし、重複が追加されないことに気付きました。ただし、間に他のオブジェクトを追加した後に同じユーザー (同じメモリ アドレスを持つ) を追加すると、重複が追加されます。

重複したオブジェクトが配列内にあることを確認するために何かを追加するたびに、配列の内容を出力しています。

私の質問は、containsObject がここで一貫して機能していない明らかな理由はありますか?

4

1 に答える 1

3

オブジェクトが同じクラスの別のオブジェクトと同等であることを識別する機能を提供する必要があり、これを行うにはメソッドisEqual:hashメソッドを実装します。

そうは言っても、あなたの質問の説明は私が期待していたものとは反対です。

于 2013-07-03T15:21:30.943 に答える