-4

いくつかの「町」を含む NSArray があります (これらの町を json データベースから取得します) が、配列内にいくつかの町が 2 回または 3 回あり、これらの町を削除する必要があります。

どうすればこの問題を解決できますか? xコードでforループまたは特定の関数を使用していますか?

助けてください!

4

5 に答える 5

1

すべての町をループして、「uniqueItems」に追加できるのは、その中にまだ存在していない場合のみです。

//Towns is an array of strings in this case

NSMutableArray *uniqueItems = [NSMutableArray array];
for (NSString *town in towns)
    if (![uniqueItems containsObject:town])
        [uniqueItems addObject:town];
于 2013-01-21T08:38:21.310 に答える
0

配列を、一意の値のみを保持できるNSSetに変換できます。

NSArray *array = ... // Your array of "towns"
NSSet *set = [[NSSet alloc] initWithArray:array];
NSArray *unique = [set allObjects];

カスタムデータクラスmakseを使用している場合は、必ず実装してくださいisEqual:

于 2013-01-21T08:38:03.257 に答える
0

これはそれを行うための手順です、

NSArray *to = // your towns;
NSSet *set = [[NSSet alloc]initWithArray:towns];
arryl = [set allObjects];
于 2013-01-21T08:38:54.957 に答える
0

1行のソリューションでは、ARC以外のプロジェクトの自動リリースを追加する必要があります

NSArray *array = // your array
NSArray filteredArray = [[[NSOrderedSet alloc] initWithArray:array] array];
于 2013-01-21T08:38:58.630 に答える
0

これにはメソッドを使用できますvalueForKey。つまり、配列のNSSetを1つ作成してから、キーごとに値を取得できます。

NSSet *uniqueStates = [NSSet setWithArray:[myArrayOfCustomObjects valueForKey:@"state"]];
于 2013-01-21T08:40:43.990 に答える