我跟随2013年秋季的斯坦福iOS 7课程,我已经习惯了所有的概念,虽然我遇到了Core Data的UIManagedDocument
和持续保存的问题。
我的应用程序与课程类似,所有模型/对象都能正常工作并正确显示。代码与提供的材料没有太大差别;所有的实例化,文件处理,对象上下文和那些东西,以及我确保的一些NSLog
调试和手动保存控制,上下文保存所做的所有更改(例如通过UIManagedDocument
点火的通知)。
什么不起作用就是保存这些东西。我的意思是,它不会将其保存到文件中,尽管它说它保存了上下文。我认为这与autosaving有关,所以我在UI中创建了一个Button来手动执行此操作。但仍然没有持久的保存。我不知道那是怎么回事。我首先使用App检查了存储,其中包含实际将对象添加到要禁用的文档的部分。然后我继续使用可以显示应用程序存储内容的第三方应用程序。结构在那里,但没有保存的数据。
我遇到了一个网站,有人说这可能与设置对象值时缺少模型中的任何必需值有关。不是这种情况,使用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];
}
}];
}
的代码
此致
答案 0 :(得分:0)
尝试使用JOURNAL = DELETE模式persistentStoreCoordinator选项而不是默认的WAL模式。