首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以保存一个NSManagedObjectModel吗?

可以保存一个NSManagedObjectModel吗?
EN

Stack Overflow用户
提问于 2014-03-26 00:29:58
回答 2查看 531关注 0票数 0

我有以下要求:用来自SQLite文件的数据创建和填充.xml数据库,这个文件可以有不同的结构,所以我不能用Xcode创建NSManagedObjectModel,它必须在运行时。我已经成功地以编程方式创建了一个NSManagedObjectModel,创建了持久存储,并使用来自.xml的数据填充了sqlite文件。然而,下次我使用该应用程序时,持久性存储与NSManagedObjectModel不兼容(我不想每次运行该应用程序时都重新创建该模型,这只是第一次)。是否有任何方法来保存我以编程方式创建的模型,并在下次需要时加载它?我在示例中看到的只是从NSBundle加载的模型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-26 01:24:50

是否有任何方法来保存我以编程方式创建的模型,并在下次需要时加载它?

是。NSManagedObjectModel符合NSCoding,这意味着您可以轻松地将它转换为/从NSData转换,保存和读取NSData很容易。

要保存模型:

代码语言:javascript
复制
NSString *modelPath = // path where you want to save
NSData *modelData = [NSKeyedArchiver archivedDataWithRootObject:self.managedObjectModel];
[modelData writeToFile:modelPath atomically:YES];

要读取保存的模型,请执行以下操作:

代码语言:javascript
复制
if ([[NSFileManager defaultManager] fileExistsAtPath:modelPath]) {
    NSData *savedModelData = [NSData dataWithContentsOfFile:modelPath];
    NSManagedObjectModel *savedModel = [NSKeyedUnarchiver unarchiveObjectWithData:savedModelData];
}
票数 5
EN

Stack Overflow用户

发布于 2014-03-26 01:15:42

我不确定您是否在说xml文件中的数据每次都在更改。听起来你指的是数据,而不是数据模型。我不能具体回答,但我会采取如下方法。

如果每次xml文件中的数据结构相同或接近相同,我将创建一个数据模型来匹配它。

然后,我将编写某种解析器类,根据"ManagedObjectModel“或数据模型读取xml并将其解析到核心数据存储中。

当您更改Core数据之外的数据存储时,我已经看到了您正在讨论的错误。您需要让核心数据处理对数据存储的所有读写,否则核心数据将基本告诉您“您的持久存储是由ManagedObjectModel以外的其他东西创建或更改的”。我认为这就是正在发生的事情。

我知道我并没有像Core Data所描述的那样使用这个术语,但是Core数据令人困惑,我试图传达信息和理解。

我也会考虑使用MagicalRecord。它极大地简化了核心数据的使用,并且有一个关于www.raywenderlich.com的很好的教程,您可以找到这里

我真的希望这能帮你解决问题。如果没有,请发布一些示例代码,或者您所引用的xml示例。

祝好运

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22649162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档