首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MagicalRecord 3.0设置

MagicalRecord 3.0设置
EN

Stack Overflow用户
提问于 2014-03-11 19:25:07
回答 1查看 660关注 0票数 0

我的xcdatamodel文件位于一个静态库中,因此我可以跨项目共享它。使用MagicalRecord 2.2,我可以让应用程序识别我的对象模型。

代码语言:javascript
复制
NSBundle *dataBundle = [NSBundle bundleWithPath:path];
NSManagedObjectModel *objectModel = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:dataBundle]];

[MagicalRecord setShouldAutoCreateManagedObjectModel:NO];
[NSManagedObjectModel MR_setDefaultManagedObjectModel:objectModel];
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"WhoAt.sqlite"];

MagicalRecord 3.0改变了这一点,我很难让它启动并运行。使用默认设置方法,在尝试保存时找不到实体。这是预期的,因为对象模型还没有被合并。当我试图使用下面的代码合并它时,有一个断言失败,即存储( MagicalRecordStack对象上的属性)为null。

代码语言:javascript
复制
NSString *path = [NSString stringWithFormat:@"%@/WADataModel.bundle", [[NSBundle mainBundle] bundlePath]];
NSBundle *dataBundle = [NSBundle bundleWithPath:path];
NSManagedObjectModel *objectModel = [NSManagedObjectModel mergedModelFromBundles:[NSArray arrayWithObject:dataBundle]];

MagicalRecordStack *stack = [[AutoMigratingMagicalRecordStack alloc] initWithStoreNamed:@"WhoAt.sqlite"];
[stack setModel:objectModel];
[MagicalRecordStack setDefaultStack:stack];

我还尝试在使用其中一种安装方法之后设置对象模型,但也失败了。任何帮助都是非常感谢的。

编辑:我停止使用2.2,因为它一直阻塞获取和保存的主线程。我希望3.0能解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-06-10 16:14:01

好的,您确定要在模型加载代码中加载数据模型吗?objectModel不是零并且包含您期望的实体吗?你在这里展示的步骤似乎是正确的。这就是:

  1. 标识模型所在的包
  2. 装捆
  3. 从捆绑包加载模型
  4. 在访问上下文之前在堆栈上设置模型(上下文是延迟加载的,因此触发模型和所有其他组件加载)

如果记录堆栈对象,会显示什么?您应该看到它是否从日志输出中加载模型、存储等。

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

https://stackoverflow.com/questions/22334663

复制
相关文章

相似问题

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