UIManagedDocument не сохраняется на диск

Я прошел курс Stanford iOS 7 осенью 2013 года и привыкаю ко всем концепциям, хотя столкнулся с проблемой UIManagedDocument Core Data и постоянным сохранением.

Мое приложение похоже на курсовое, и все Модель/Объект работает нормально и отображается корректно. Код мало чем отличается от предоставленного материала; все с созданием экземпляров, обработкой файлов, контекстом объекта и прочим, а также с некоторой отладкой NSLog и ручным управлением сохранением, я убедился, что контекст сохраняет все внесенные в него изменения (например, через уведомление о UIManagedDocument пожарах).

Что НЕ работает, так это хранить этот материал в файле. Я имею в виду, что он не сохраняет его в файл, хотя и говорит, что сохраняет контекст. Я думал, что это связано с автосохранением, поэтому я создал кнопку в пользовательском интерфейсе, чтобы сделать это вручную. Но до сих пор нет постоянного сохранения. Я понятия не имею, как это может быть. Сначала я проверил хранилище с помощью приложения, при этом те части, которые фактически добавляют объекты в документ, были отключены. Затем я перешел к использованию стороннего приложения, которое может отображать содержимое хранилища приложений. Структура есть, но нет сохраненных данных.

Я наткнулся на веб-сайт, где кто-то сказал, что это может быть связано с отсутствием каких-либо необходимых значений в модели при установке значений объектов. Не тот случай, протестировано с подклассом UIManagedDocument с этой штукой handleError:.

Кто-нибудь еще получил это? Структура данных довольно проста, всего одна сущность с примерно 6 строками и еще одним типом значения. Я не хочу размещать здесь весь код, так как его много. Если у вас есть подозрения, что это может быть, могу выложить части кода.

Код создания документа в AppDelegate.m:

NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *documentsDirectory = [[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];

NSURL *url = [documentsDirectory URLByAppendingPathComponent:@"AppDocument"];

DebuggingManagedDocument *document = [[DebuggingManagedDocument alloc] initWithFileURL:url];


NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
document.persistentStoreOptions = options;


if ( [fileManager fileExistsAtPath:[url path]] ) {
    [document openWithCompletionHandler:^(BOOL success){
        if ( !success ) {
            NSLog(@"Could not open document.. :(");
        } else {
            [self documentIsReady:document];
        }
    }];
} else {
    // Create
    [document saveToURL:url forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){
        if ( !success ) {
            NSLog(@"Could not save document... :(");
        } else {
            NSLog(@"Saved document!!");
            [self documentIsReady:document];
        }
    }];
}

Код

С Уважением


person Saphired    schedule 03.03.2014    source источник
comment
Можете ли вы показать нам свой код? В частности, когда вы получаете контекст объекта, создаете объект и т. д.   -  person Enrico Susatyo    schedule 04.03.2014


Ответы (1)


Попробуйте использовать режим JOURNAL=DELETE для параметра persistenceStoreCoordinator вместо режима WAL по умолчанию.

person Duncan Groenewald    schedule 14.03.2014