0

こんにちは、私は 2 つの配列を持っています。1 つは 200 + オブジェクト (変更されません) で、もう 1 つは整数の配列 (NSNumber オブジェクトとして) です。配列 1 のすべてのオブジェクトの配列となる 3 番目の配列を作成する最も簡単な方法配列 2 からのインデックスの配列に含まれていますか?

4

2 に答える 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 に答える