Использование Core Data для получения генерирует «нераспознанную ошибку селектора»? - PullRequest
1 голос
/ 21 октября 2011

Я пытаюсь получить список объектов, сохраненных с использованием Core Data.Нет изменений, где были сделаны настройки по умолчанию, сделанные XCode при создании проекта.В реальном хранилище данных есть элементы, и при сохранении сущность Transaction работает нормально, но при запуске следующего кода:

    NSManagedObjectContext * context = [[NSApp delegate] managedObjectModel];
    NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription * entity = [NSEntityDescription 
                                    entityForName:@"Transaction" 
                                    inManagedObjectContext:context];
    [fetchRequest setEntity:entity];
    NSError * error = nil;
    NSArray * transactionList = [context executeFetchRequest:fetchRequest error:&error];
    if (&error != nil) {
        [Utility showMessage:error.description asError:YES];
    } else {
        [Utility showMessage:[NSString stringWithFormat: @"Items: %@", transactionList.count] asError:NO];
    }    

При попытке создать объект entity появляется следующая ошибка.

[NSManagedObjectModel persistentStoreCoordinator]: нераспознанный селектор отправлен в экземпляр

Чего мне не хватает или что мне сделать, чтобы проверить, что является причиной ошибки?

Сноски
- Utility - это статический класс, который просто генерирует поле NSAlert.
- я использовал этот учебник дляпопробуйте понять, как работает код

Ответы [ 2 ]

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

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

Кроме того, вы должны проверить, если (error!=nil) не &error. Читайте о вашем синтаксисе указателя C (;-).

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

В первой строке вы извлекаете managedObjectModel из вашего делегата приложения и назначаете его NSManagedObjectContext.Вы должны получить managedObjectContext вместо.

...