将 NSMutableArray 拆分成不同的数组
Split NSMutableArray into different Arrays
所有,
在一个可变数组中,我有多个数组,在每个数组中,我有多个字典,在字典中,我有共同的值,基于我必须对值进行分组的 Array/Dictionary 下面是示例数组
(
(
{
name = "attribute_Subject";
value = English;
},
{
name = "attribute_class";
value = Fourth;
},
),
(
{
name = "attribute_Subject";
value = English;
},
{
name = "attribute_class";
value = Fifth;
},
),
(
{
name = "attribute_Subject";
value = Maths;
},
{
name = "attribute_class";
value = Fourth;
},
),
(
{
name = "attribute_Subject";
value = Science;
},
{
name = "attribute_class";
value = Fourth;
},
),
(
{
name = "attribute_Subject";
value = English;
},
{
name = "attribute_class";
value = Sixth;
},
),
(
{
name = "attribute_Subject";
value = Maths;
},
{
name = "attribute_class";
value = Sixth;
},
),
)
如果你看到数组我们在三个数组中有英语,我希望三个数组在一个单独的数组中,"Science" 和数学
我们可以使用谓词吗?
谁能帮忙
我认为这段代码会有帮助。
NSLog(@"%@", muteArray);
NSArray *valuesArray = [muteArray valueForKey:@"value"];
NSMutableArray *valuesArray1 = [[NSMutableArray alloc]init];
for(NSArray *arr in valuesArray) {
[valuesArray1 addObject:[arr objectAtIndex:0]];
}
NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:valuesArray1];
NSArray *arrayWithoutDuplicates = [orderedSet array];
NSArray *filtered = [muteArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"value Contains[d] %@", [arrayWithoutDuplicates objectAtIndex:0]]];
使用 for 循环获取 arrayWithoutDuplicates 后,您可以获得单独的数组。
我不完全确定我理解你的要求,但我认为这应该有所帮助:
Objective-C:
//1
NSMutableArray* englishArray = [[NSMutableArray alloc]init];
NSMutableArray* scienceArray = [[NSMutableArray alloc]init];
NSMutableArray* mathArray = [[NSMutableArray alloc]init];
//2
for(int i = 0; i < mainArray.count; i++){
//3
if([mainArray[i][0][@"value"] isEqual: @"English"]){
//4
[englishArray addObject:mainArray[i]];
}
else if([mainArray[i][0][@"value"] isEqual: @"Science"]){
[scienceArray addObject:mainArray[i]];
}
else if([mainArray[i][0][@"value"] isEqual: @"Math"]){
[mathArray addObject:mainArray[i]];
}
}
以上代码解释:
- 创建3个
NSMutableArrays
来存储三个主题数组。
- 遍历 mainArray 中的所有数组(其中 mainArray 是您提供的完整数组)
- 要检查主题,首先访问索引 i 处的 mainArray 中的数组。
例如。主数组[i] :
(
{
name = "attribute_Subject";
value = English;
},
{
name = "attribute_class";
value = Fourth;
},
),
3.(续)然后访问我们刚刚访问的数组中的第一个元素。 (第一个元素是包含主题值的字典)
例如。主数组[i][0] :
{
name = "attribute_Subject";
value = English;
},
3.(cont.2)然后访问该字典的键@"value" 的值。
例如。 mainArray[i][0][@"value"]:
@"English"
4.If 该键等于我们需要的键,将数组添加到适当的主题数组中。
所有,
在一个可变数组中,我有多个数组,在每个数组中,我有多个字典,在字典中,我有共同的值,基于我必须对值进行分组的 Array/Dictionary 下面是示例数组
(
(
{
name = "attribute_Subject";
value = English;
},
{
name = "attribute_class";
value = Fourth;
},
),
(
{
name = "attribute_Subject";
value = English;
},
{
name = "attribute_class";
value = Fifth;
},
),
(
{
name = "attribute_Subject";
value = Maths;
},
{
name = "attribute_class";
value = Fourth;
},
),
(
{
name = "attribute_Subject";
value = Science;
},
{
name = "attribute_class";
value = Fourth;
},
),
(
{
name = "attribute_Subject";
value = English;
},
{
name = "attribute_class";
value = Sixth;
},
),
(
{
name = "attribute_Subject";
value = Maths;
},
{
name = "attribute_class";
value = Sixth;
},
),
)
如果你看到数组我们在三个数组中有英语,我希望三个数组在一个单独的数组中,"Science" 和数学
我们可以使用谓词吗?
谁能帮忙
我认为这段代码会有帮助。 NSLog(@"%@", muteArray);
NSArray *valuesArray = [muteArray valueForKey:@"value"];
NSMutableArray *valuesArray1 = [[NSMutableArray alloc]init];
for(NSArray *arr in valuesArray) {
[valuesArray1 addObject:[arr objectAtIndex:0]];
}
NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:valuesArray1];
NSArray *arrayWithoutDuplicates = [orderedSet array];
NSArray *filtered = [muteArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"value Contains[d] %@", [arrayWithoutDuplicates objectAtIndex:0]]];
使用 for 循环获取 arrayWithoutDuplicates 后,您可以获得单独的数组。
我不完全确定我理解你的要求,但我认为这应该有所帮助:
Objective-C:
//1
NSMutableArray* englishArray = [[NSMutableArray alloc]init];
NSMutableArray* scienceArray = [[NSMutableArray alloc]init];
NSMutableArray* mathArray = [[NSMutableArray alloc]init];
//2
for(int i = 0; i < mainArray.count; i++){
//3
if([mainArray[i][0][@"value"] isEqual: @"English"]){
//4
[englishArray addObject:mainArray[i]];
}
else if([mainArray[i][0][@"value"] isEqual: @"Science"]){
[scienceArray addObject:mainArray[i]];
}
else if([mainArray[i][0][@"value"] isEqual: @"Math"]){
[mathArray addObject:mainArray[i]];
}
}
以上代码解释:
- 创建3个
NSMutableArrays
来存储三个主题数组。 - 遍历 mainArray 中的所有数组(其中 mainArray 是您提供的完整数组)
- 要检查主题,首先访问索引 i 处的 mainArray 中的数组。
例如。主数组[i] :
(
{
name = "attribute_Subject";
value = English;
},
{
name = "attribute_class";
value = Fourth;
},
),
3.(续)然后访问我们刚刚访问的数组中的第一个元素。 (第一个元素是包含主题值的字典)
例如。主数组[i][0] :
{
name = "attribute_Subject";
value = English;
},
3.(cont.2)然后访问该字典的键@"value" 的值。
例如。 mainArray[i][0][@"value"]:
@"English"
4.If 该键等于我们需要的键,将数组添加到适当的主题数组中。