gpt4 book ai didi

core-data - UIManagedDocument 的迁移问题

转载 作者:行者123 更新时间:2023-12-02 14:38:02 29 4
gpt4 key购买 nike

在斯坦福大学 CS193P 类(class)中,我开始在我的应用程序中使用 CoreData,该类(class)涉及 iOS 5 新类 UIManagedDocument 的使用。该方法本身非常简单,但我不明白如何处理我不断进行的模型修改。这就是我实例化 UIManagedDocument 对象的方式(在 appDelegate 内部,以便其他所有类都可以使用它):

if (!self.database) {
NSURL *url=[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"AppName"];

UIManagedDocument *doc = [[UIManagedDocument alloc] initWithFileURL:url];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
doc.persistentStoreOptions = options;
self.database=doc;
[doc release];
}

我遇到的问题是,每次我更改 .xcdatamodel 的一点点,我都无法获取以前存储在文档中的所有内容以及创建任何新实例。事实上,这样做会产生以下异常:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This NSPersistentStoreCoordinator has no persistent stores.  It cannot perform a save operation.'

我认为设置托管文档的“选项”属性可以解决问题,但显然这还不够。有人可以帮忙吗?找不到其他真正符合我的具体需求的问题。

最佳答案

在修改核心数据模型之前,您应该“添加模型版本”。

1.选择原始模型文件。 (例如 YourProject.xcdatamodel)

2.“编辑器”->“添加模型版本...”。然后添加新的模型版本(例如2.0)

3.您将获得一个新的模型文件。 (例如 YourProject 2.0.xcdatamodel)。修改一下。

4.更改当前模型版本。选择顶部 .xcdtatmodel 文件 ->“查看”->“实用程序”->“显示文件检查器”。找到标签“版本化核心数据模型”并选择您要修改的正确版本。

也困扰了我很长一段时间。希望这个方法可以帮到你^^

关于core-data - UIManagedDocument 的迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9771005/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com