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

以上代码解释:

  1. 创建3个NSMutableArrays来存储三个主题数组。
  2. 遍历 mainArray 中的所有数组(其中 mainArray 是您提供的完整数组)
  3. 要检查主题,首先访问索引 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 该键等于我们需要的键,将数组添加到适当的主题数组中。