2012-06-21 2 views
1

Я использую CoreData (NSManagedObject, UIManagedDocument) для приложения iOS, и мне было интересно, можно ли получить массив атрибутов.Как получить массив атрибутов в iOS Core Data?

Например, предположим, что у меня есть Person объекты в моей базе данных, и каждый Person имеет атрибут income и имя под названием name. Предположим, у меня есть несколько Person s в моей базе. Возможно ли получить массив, содержащий все доходы для всей моей базы данных? (Массив с доходами каждого человека в качестве записи). Если да, как бы я отсортировал массив по их имени?

Если это невозможно, как бы вы предложили мне пойти на это? Я не хочу извлекать весь объект Person, потому что есть много других больших атрибутов, таких как images, которые потребуют много времени для извлечения.

ответ

2

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

NSFetchRequest* fetchRequest = [NSFetchRequest new]; 
fetchRequest.entity = <person entity description>; 
fetchRequest.propertiesToFetch = @[ @"name", @"income" ]; 
fetchRequest.sortDescriptors = @[ [NSSortDescriptor sortDescriptorWithKey: @"name" ascending: YES] ]; 
fetchRequest.resultType = NSDictionaryResultType; 

NSError* error = nil; 
NSArray* personsAttributes = [managedObjectContext executeFetchRequest: fetchRequest error: &error]; 

personsAttributes будет выглядеть:

[ 
    { "name" : "Alfred", "income" : 1000 }, 
    { "name" : "Birgite", "income" : 2000 }, 
    … 
] 

код с ARC & литералов. Вам, возможно, придется адаптировать его к вашим потребностям и вариантам компиляции.

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