Я прошел курс 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];
}
}];
}
Код
С Уважением