Проследих курса по 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];
}
}];
}
Код на
за разбирането