目标:将存储在Mutable数组中的值(不断变化的数据)与静态数组的索引进行比较。当值匹配时,我想将静态数组的对象添加到新的可变数组中。
示例:
MutableArray在当前状态下的值:
(1,2,3)
(索引) - 静态数组的值:
(0) - "零" (1) - "一个" (2) - "两个" (3) - "三" (4) - "四"
从最初的MutableArray获取值并将它们与静态数组索引进行比较。将这些索引的值输出到新的MutableArray
("一个""两个""三&#34)
通过将MutableArrayContents通过谓词传递给它来派生初始数组:
NSMutableArray *indexArray = [NSMutableArray array];
for (NSMutableArray* obj in _searchResults)
{
if([_questionsArray containsObject:obj] && ![indexArray containsObject:obj])
[indexArray addObject:@([_questionsArray indexOfObject:obj])];
}
IndexArray是" index' s"的数组。
我已尝试过循环,但它们无法正常工作,任何帮助都会受到赞赏。
谢谢!
答案 0 :(得分:0)
你可以试试这个:
NSArray *staticArr = @[@"Zero",@"One",@"Two",@"Three",@"Four"];
NSArray *otherArr = @[@1,@2,@3];
NSMutableArray * array = [[NSMutableArray alloc] initWithCapacity:[otherArr count]];
for(int i = 0; i < [staticArr count]; i++) {
for(int j = 0; j < [otherArr count]; j++) {
if([[otherArr objectAtIndex:j] intValue] == i) {
[array insertObject:[staticArr objectAtIndex:i] atIndex:j];
break;
}
}
}
答案 1 :(得分:0)
试试这个方法
NSArray *staticArr = @[@"Zero", @"One", @"Two", @"Three", @"Four"];
NSArray *otherArr = @[@(1), @(2), @(3)];
NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:[otherArr count]];
[staticArr enumerateObjectsUsingBlock:^(NSString *string, NSUInteger staticIndex, BOOL *staticStop) {
[otherArr enumerateObjectsUsingBlock:^(NSNumber *number, NSUInteger index, BOOL *stop) {
if (number.integerValue == staticIndex) {
[array insertObject:string atIndex:index];
}
}];
}];
答案 2 :(得分:0)
我在选项卡上输入此内容。请原谅任何格式问题
NSMutableArray *indices; //I am omitting the adding of data, it contains required indices as NSNumber objects
NSArray *staticArr = @[@"One", @"Two", @"Three", @"Four", @"Five"];
NSMutableArray *array = [NSMutableArray new];
for(NSNumber *index in indices) {
NSInteger idx = [index integerValue];
If(idx < staticArr.count)
{
[array addObject:[staticArr objectAtIndex:idx];
}
}
这将是indices数组中元素的顺序,如果indices数组中有重复,则可能会重复。
这是最简单的方法,有很多方法可以使用Apple的API来获取子阵列