全部,
在一个可变阵列中我有多个阵列,在每个阵列中我有多个词典,在词典中我有共同的值,基于我必须在下面组合一个数组/词典是样本数组
(
(
{
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;
},
),
)
如果您看到阵列我们在三个阵列中有英语,我希望将三个阵列放在一个单独的数组中,同样用于“科学”和数学
我们可以使用谓词吗?
任何人都可以提供帮助
答案 0 :(得分:1)
我不完全确定我明白你的要求,但我认为这应该有所帮助:
<强>目标-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]];
}
}
上述代码说明:
NSMutableArrays
来存储三个主题数组。例如。 mainArray [i]:
(
{
name = "attribute_Subject";
value = English;
},
{
name = "attribute_class";
value = Fourth;
},
),
3.(续)然后访问我们刚才访问的那个数组中的第一个元素。 (第一个元素是包含主题值的字典)
例如。 mainArray [i] [0]:
{
name = "attribute_Subject";
value = English;
},
3.(续)然后访问该词典的key @“value”的值。
例如。 mainArray [i] [0] [@“value”]:
@"English"
4.如果该键等于我们需要的键,则将该数组添加到适当的主题数组中。
答案 1 :(得分:0)
我认为此代码会有所帮助。 NSLog(@&#34;%@&#34;,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后,您可以获得单独的数组。