1

セットに一意のオブジェクトを追加したいだけなので、NSSet を使用しています。オブジェクトがそのセットに正常に追加された場合、オブジェクトを配列に追加したいと思います。これを行う方法はありますか?オブジェクトが正常に追加されたときに、NSSet に何かを返させることはできますか?

4

4 に答える 4

2

追加を試みる前後の NSSet の数を比較できます。

NSInteger setCount = [mySet count];
[mySet addObject:foo];
if ([mySet count] > setCount) {
    // object was added
}

オブジェクトを追加する前に、containsObject テストを実行することもできます。

if ([mySet containsObject:foo]) {
    // object already exists
} else {
    // object is not yet in the set
    [mySet addObject:foo];
    [myArray addObject:foo];
}

さらに別のオプションは、単純にオブジェクトをセットに追加し、完了したらセットを配列に変換することです。

[mySet addObject:foo];
NSArray *myArray = [mySet allObjects];
于 2013-10-22T02:22:45.943 に答える
0

配列とセットの両方に同じオブジェクトを追加している限り、なぜそれをしたいのかわかりません。すべてのオブジェクトを NSSet に追加し、以下のメソッドを呼び出して NSMutableArray を取得します。

NSMutableArray *uniqueItems = [NSMutableArray arrayWithArray:[mySet allObjects]];
于 2013-10-22T02:34:43.557 に答える