こんにちは、私は 2 つの配列を持っています。1 つは 200 + オブジェクト (変更されません) で、もう 1 つは整数の配列 (NSNumber オブジェクトとして) です。配列 1 のすべてのオブジェクトの配列となる 3 番目の配列を作成する最も簡単な方法配列 2 からのインデックスの配列に含まれていますか?
質問する
230 次
2 に答える
2
1 つのオプションは、インデックスの配列を に変換してからNSIndexSet
使用することです。objectsAtIndexes:
NSArray *objects = @[@"A", @"B", @"C", @"D", @"E", @"F", @"G"];
NSArray *indexArray = @[@(0), @(2), @(6)];
NSMutableIndexSet *indexSet = [NSMutableIndexSet indexSet];
for (NSNumber *number in indexArray) {
[indexSet addIndex:[number unsignedIntegerValue]];
}
NSArray *filtered = [objects objectsAtIndexes:indexSet];
結果:A, C, G
もちろん、可能であれば、配列ではなくインデックス セットを直接使用することをお勧めします。
または、単純なループを使用することもできます。
NSMutableArray *filtered = [[NSMutableArray alloc]
initWithCapacity:indexArray.length];
for (NSNumber *number in indexArray) {
[filtered addObject:objects[[number unsignedIntegerValue]]];
}
于 2012-12-09T14:22:27.130 に答える
1
You can create sets and use the methods on NSMutableSet
NSArray *array1 = @[ @1, @2, @3 ];
NSArray *array2 = @[ @2 ];
NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set intersectSet:[NSSet setWithArray:array2]];
NSLog(@"%@", set.allObjects);
//=>( 2 )
于 2012-12-09T14:18:11.043 に答える