Правильный способ использования setPropertiesToFetch
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
[fetchRequest setResultType:NSDictionaryResultType]; // Remember to setResultType
[fetchRequest setPropertiesToFetch:
[NSArray arrayWithObjects:@"name", @"age", nil]];
NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest
error:nil];
NSArray *nameArray = [results valueForKey:@"name"];
NSArray *ageArray = [results valueForKey:@"age"];
результаты - это не массив объектов Person * , а массив Dictionary . Вы можете получить доступ к словарям внутри, как это
NSLog(@"%@", [results[0] valueForKey:@"name"]);
NSLog(@"%@", [results[0] valueForKey:@"age"]);
Если вы хотите работать только с объектом Model (который CoreData извлекает все свойства / атрибуты объекта), вы можете создать свою модель с Person и PersonDetail (который содержит подробную информацию о человеке). Сюда
- Вы можете выполнить fetchRequest и получить массив объектов Person
- При доступе к aPerson.detail (подробности - это отношение один-к-одному с PersonDetail), CoreData выполнит ошибку для вас