いくつかの「町」を含む NSArray があります (これらの町を json データベースから取得します) が、配列内にいくつかの町が 2 回または 3 回あり、これらの町を削除する必要があります。
どうすればこの問題を解決できますか? xコードでforループまたは特定の関数を使用していますか?
助けてください!
すべての町をループして、「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];
配列を、一意の値のみを保持できるNSSetに変換できます。
NSArray *array = ... // Your array of "towns"
NSSet *set = [[NSSet alloc] initWithArray:array];
NSArray *unique = [set allObjects];
カスタムデータクラスmakseを使用している場合は、必ず実装してくださいisEqual:
これはそれを行うための手順です、
NSArray *to = // your towns;
NSSet *set = [[NSSet alloc]initWithArray:towns];
arryl = [set allObjects];
1行のソリューションでは、ARC以外のプロジェクトの自動リリースを追加する必要があります
NSArray *array = // your array
NSArray filteredArray = [[[NSOrderedSet alloc] initWithArray:array] array];
これにはメソッドを使用できますvalueForKey
。つまり、配列のNSSetを1つ作成してから、キーごとに値を取得できます。
NSSet *uniqueStates = [NSSet setWithArray:[myArrayOfCustomObjects valueForKey:@"state"]];