2013-09-16 4 views
0

Есть ли способ генерировать все эти массивы с использованием значения int? ... Я не хочу копировать/вставлять столько, сколько в моем следующем контроллере представления, у меня будет около 86 массивов. Любая помощь очень ценится.Генерировать массивы

Спасибо!

NSPredicate *parentPredicate1 = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
{ 
    return [evaluatedObject[@"parent_id"] isEqual:@"1"]; 
}]; 
NSPredicate *parentPredicate2 = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
{ 
    return [evaluatedObject[@"parent_id"] isEqual:@"2"]; 
}]; 
NSPredicate *parentPredicate3 = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
{ 
    return [evaluatedObject[@"parent_id"] isEqual:@"3"]; 
}]; 
NSPredicate *parentPredicate4 = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
{ 
    return [evaluatedObject[@"parent_id"] isEqual:@"4"]; 
}]; 
NSPredicate *parentPredicate5 = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
{ 
    return [evaluatedObject[@"parent_id"] isEqual:@"5"]; 
}]; 
NSPredicate *parentPredicate6 = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
{ 
    return [evaluatedObject[@"parent_id"] isEqual:@"6"]; 
}]; 
NSPredicate *parentPredicate7 = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
{ 
    return [evaluatedObject[@"parent_id"] isEqual:@"7"]; 
}]; 
NSPredicate *parentPredicate8 = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
{ 
    return [evaluatedObject[@"parent_id"] isEqual:@"8"]; 
}]; 
NSPredicate *parentPredicate9 = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) 
{ 
    return [evaluatedObject[@"parent_id"] isEqual:@"9"]; 
}]; 

childID_1 = [parentArray filteredArrayUsingPredicate:parentPredicate1]; 
childID_2 = [parentArray filteredArrayUsingPredicate:parentPredicate2]; 
childID_3 = [parentArray filteredArrayUsingPredicate:parentPredicate3]; 
childID_4 = [parentArray filteredArrayUsingPredicate:parentPredicate4]; 
childID_5 = [parentArray filteredArrayUsingPredicate:parentPredicate5]; 
childID_6 = [parentArray filteredArrayUsingPredicate:parentPredicate6]; 
childID_7 = [parentArray filteredArrayUsingPredicate:parentPredicate7]; 
childID_8 = [parentArray filteredArrayUsingPredicate:parentPredicate8]; 
childID_9 = [parentArray filteredArrayUsingPredicate:parentPredicate9]; 

_allArrays = [[ NSMutableArray alloc] initWithObjects:childID_1, childID_2, childID_3, childID_4, childID_5, childID_6, childID_7, childID_8, childID_9, nil]; 

}

ответ

1

использовать цикл

NSMutableArray *childObjects = [NSMutableArray array]; 

for (NSUInteger i = 1; i < N; i++) 
{ 
    NSPredicate *parentPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { 
     NSString *value = [@(i) stringValue]; 
     return [evaluatedObject[@"parent_id"] isEqual:value]; 
    }]; 

    [childObjects addObject:[parentArray filteredArrayUsingPredicate:parentPredicate]]; 
} 
1

блок может использовать локальную переменную, так что вы можете поместить их в петлю

_allArrays = [[ NSMutableArray alloc] init]; 

for (int i = 0; i < 10; i++) 
{ 

    NSPredicate *parentPredicate = [NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, 
    NSDictionary *bindings) 
    { 
     return [evaluatedObject[@"parent_id"] isEqual:[NSString stringWithFormat:@"%d", i]]; 
    }]; 
    [_allArrays addObject:[[parentArray filteredArrayUsingPredicate:parentPredicate]]]; 
} 
+0

Большое спасибо, ребята. Это было очень полезно. –

+0

Но если у меня уже есть categoryInt, как я могу использовать его значения? –

+0

@AlexandruAron что такое 'categoryInt' ?? –

Смежные вопросы