Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从索引中提取目标C可变项数组_Objective C_Arrays_Indexing - Fatal编程技术网

Objective c 从索引中提取目标C可变项数组

Objective c 从索引中提取目标C可变项数组,objective-c,arrays,indexing,Objective C,Arrays,Indexing,嗨,我有两个数组一个有200多个对象(从不改变),另一个是整数数组(作为NSNumber对象)创建第三个数组的最简单方法是什么?该数组是数组1中的所有对象的数组,这些对象包含在数组2的索引数组中。您可以创建集合并使用NSMutableSet NSArray *array1 = @[ @1, @2, @3 ]; NSArray *array2 = @[ @2 ]; NSMutableSet *set = [NSMutableSet setWithArray:array1]; [set inter

嗨,我有两个数组一个有200多个对象(从不改变),另一个是整数数组(作为NSNumber对象)创建第三个数组的最简单方法是什么?该数组是数组1中的所有对象的数组,这些对象包含在数组2的索引数组中。

您可以创建集合并使用
NSMutableSet

NSArray *array1 = @[ @1, @2, @3 ];
NSArray *array2 = @[ @2 ];

NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set intersectSet:[NSSet setWithArray:array2]];

NSLog(@"%@", set.allObjects);

//=>( 2 )

您可以在
NSMutableSet

NSArray *array1 = @[ @1, @2, @3 ];
NSArray *array2 = @[ @2 ];

NSMutableSet *set = [NSMutableSet setWithArray:array1];
[set intersectSet:[NSSet setWithArray:array2]];

NSLog(@"%@", set.allObjects);

//=>( 2 )

一个选项是将索引数组转换为
NSIndexSet
,然后使用
objectsaindex:

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]]];
}

一个选项是将索引数组转换为
NSIndexSet
,然后使用
objectsaindex:

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]]];
}

我不认为那是他想要的。@DrummerB。。。但是,如果你逐字逐句地阅读这个问题,实际上是正确的答案。如果他是这个意思,我想他会说“200+数字”而不是“对象”,但你是对的,这绝对不是一个明确的问题。我不认为这是他要找的。@Drumber。。。但是如果你逐字阅读这个问题,实际上是正确的答案。如果他是这个意思,我想他会说“200+数字”而不是“对象”,但你是对的,这绝对不是一个明确的问题。如果你可以使用
NSIndexSet
而不是第二个数组。然后它只是一个
[array1 ObjectSatiIndexes:indexSet]
我看到了两种不同的解决方案,都投了赞成票!!!你能举例说明你真正想要什么吗?如果你能使用
NSIndexSet
而不是第二个数组。然后它只是一个
[array1 ObjectSatiIndexes:indexSet]
我看到了两种不同的解决方案,都投了赞成票!!!你能举例说明你真正想要什么吗?谢谢,这个答案正是我想要的。最后一个问题我得到的数组(已过滤)通过上面的代码变成了一个可imutable数组,我如何将其生成为一个可变数组,以便在需要时对其进行进一步过滤?
NSMutableArray*filtered=[NSMutableArray arrayWithArray:[objects ObjectsIndexes:indexSet]NSMutableArray*filtered=[NSMutableArray arrayWithArray:[objects ObjectsIndexes:indexSet]