Я пытаюсь отфильтровать NSArray из NSDictionaries. В моем примере ниже я хочу dict1, dict2 & dict4 сгруппирован в один массив, dict3 & dict5 сгруппирован во второй массив и dict6 в третьем массиве.Группировка NSArray из NSDictionary на основе ключа в NSDictionay
Я получаю эти данные в NSArray, поэтому по существу массив «orig» ниже - это мой вход, и я знаю, что мне нужно делать группировку на основе «Name».
Вместо того, чтобы перебирать NSArray, я использую valueForKeyPath для возврата массива на основе пути ключа, но это не работает (сбой с журналами - [NSMutableArray addObjectsFromArray:]: аргумент массива не является NSArray ').
Любое предложение.
NSDictionary *dict1 = @{@"Name" : @"T1", @"Age" : @"25"};
NSDictionary *dict2 = @{@"Name" : @"T1", @"Age" : @"25"};
NSDictionary *dict3 = @{@"Name" : @"T2", @"Age" : @"27"};
NSDictionary *dict4 = @{@"Name" : @"T1", @"Age" : @"25"};
NSDictionary *dict5 = @{@"Name" : @"T2", @"Age" : @"27"};
NSDictionary *dict6 = @{@"Name" : @"T3", @"Age" : @"28"};
NSArray *orig = @[dict1, dict2, dict3, dict4, dict5, dict6];
NSMutableArray *final = [NSMutableArray array];
final = [orig valueForKeyPath:@"@unionOfArrays.Name"];
NSLog(@"Final = %@", final);
Большое вам спасибо за ваш ответ. Я не хочу сортировать существующий массив. Я хочу иметь разные массивы, содержащие только конкретные данные. В вашем втором подходе мне нужно знать значение для подачи в предикат, который я не знаю. Я просто хочу получить разные массивы с уникальными значениями ключа. – Abhinav