Новый проект Новая модель NSPersistentDocument У этого NSPersistentStoreCoordinator нет постоянных хранилищ

Я искал stackru и Googling в течение нескольких часов. Я сделал простой проект, чтобы возиться с Core Data и привязками. Это добавило сущность к модели, и она больше не будет работать. Я получал сообщение "Этот NSPersistentStoreCoordinator не имеет постоянных хранилищ. Он не может выполнить операцию сохранения" всякий раз, когда пытался добавить данные в новый документ. Я следовал каждому совету, который мог найти без удачи.

Наконец, я сделал новый проект (на основе NSPersistentDocument) и создал новую модель с нуля. Я удостоверился, что модель была прекрасна прежде, чем я управлял проектом впервые.

В WindowControllerDidLoadNib: проект вызывает метод для добавления данных. Перед процедурой addData я регистрирую ManagedObjectContext и ManagedObjectModel. Ни один из них не ноль.

Я все еще получаю этот%$ & # @! ошибка.

У кого-нибудь есть новые идеи по этому поводу?

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

У меня была похожая проблема некоторое время назад при импорте файлов. Поскольку у меня был полный контроль, я назвал и сохранил документ, а затем смог сохранить контекст.

1 ответ

Решение

Как я указывал в комментарии выше, по крайней мере в Mountain Lion вам нужно сохранить документ хотя бы один раз, прежде чем вы сможете сохранить контекст. Я провел несколько экспериментов, и небольшое количество измененных данных было сохранено с помощью автосохранения без сохранения контекста. Я изменил свой метод saveContext следующим образом:

- (void)saveContext {

    if (![self fileURL]) {
        NSLog(@"Can't save context.  No file name has been set.");
        return;
    } 
    NSError *error = nil;
    if (![self.managedObjectContext save:&error]) {
        [NSApp presentError:error];
        NSLog(@"Error userInfo: %@",[error userInfo]);
        abort();
    }
}
Другие вопросы по тегам