Как эффективно получить массив значений свойств из основного объекта данных? - PullRequest
9 голосов
/ 19 ноября 2011

Рассмотрим следующее:

NSFetchRequest *request = [[NSFetchRequest Alloc] init];
request.entity = [NSEntityDescription entityWithName:@"Person" inContext:_MOC];
request.propertiesToFetch = [NSArray arrayWithObject:@"Name"];
NSError *error = nil;
NSArray *results = [_MOC executeFetchRequest:request error:&error];

Возвращает массив Person объектов.То, что я хочу, это массив Person.name значений из этих объектов.В настоящее время я хожу по массиву результатов, извлекаю имена и строю новый массив.Есть ли более чистый и быстрый способ сделать это?Я думал об изменении request.resultType на NSDictionaryResultType, но это ничего не стоит, поскольку мне все еще нужно преобразовать массив словаря в нужный мне массив.

У меня уже есть решение, реализованное выше,так что действительно ищу лучший путь.Если правильный ответ «нет лучшего пути», это нормально, просто убедившись, что я что-то не пропустил.Спасибо!

РЕДАКТИРОВАТЬ: думая об этом, я подвергаю сомнению мою потребность в массиве значений по сравнению с использованием только массива управляемых объектов.В любом случае, все равно был бы признателен за отличный ответ, если он есть.

1 Ответ

13 голосов
/ 19 ноября 2011

Запросить NSDictionaryResultType, а затем с полученным массивом словарей просто запросить [array valueForKey:@"name"]. Когда NSArray получает -valueForKey:, он возвращает новый NSArray, созданный по результатам вызова -valueForKey: для всех его элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...