В XCode NSFetchRequest только возвращает Объекты, но не их атрибуты - PullRequest
3 голосов
/ 28 октября 2011

У меня есть следующий код для извлечения набора «Проектов» из базовых данных (каждый «Проект» имеет некоторые атрибуты, например, «заголовок», «время», «время окончания», «оплата» и т. Д.):

NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:__managedObjectContext];
    [request setEntity:entity];

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"endTime" ascending:NO];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [request setSortDescriptors:sortDescriptors];


    NSError *error = nil;
    NSMutableArray *mutableFetchResults = [[__managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
    if (mutableFetchResults == nil) {
        // Handle the error.
    }

    [self setEventsArray:mutableFetchResults];

Однако возвращаются только проекты без их атрибутов: <NSManagedObject: 0x154010> (entity: Project; id: 0x1dad70 <x-coredata://85BD9DF1-B41B-4234-8397-C2F568D0CC7A/Project/p3> ; data: <fault>

Должен ли я получать атрибуты отдельно или я что-то пропустил?спасибо.

Ответы [ 2 ]

2 голосов
/ 29 октября 2011

Нормально видеть ошибку с извлечением. Неисправности представляют собой отдельные элементы или «призрачные» объекты, которые представляют место управляемого объекта в графе объектов без дополнительных затрат на загрузку набора данных атрибутов, которые могут никогда не понадобиться.

Вы не увидите журнал атрибутов, пока не попытаетесь получить доступ к одному из атрибутов определенного управляемого объекта.

Вновь созданные объекты или изменения атрибутов существующих объектов не будут сохранены на диск до тех пор, пока вы не вызовете save в контексте управляемого объекта.

1 голос
/ 28 октября 2011

data: <fault> просто означает, что атрибуты еще не загружены еще . Как только вы получите доступ к атрибутам, они будут извлечены из базы данных.

...