核心数据模型 Url 在框架中为 Nil

Posted

技术标签:

【中文标题】核心数据模型 Url 在框架中为 Nil【英文标题】:Core Data Model Url is Nil in Framework 【发布时间】:2015-08-04 17:29:44 【问题描述】:

我正在使用 Apple 文档化代码链接 CoreData xcdatamodeld 文件,但它在项目中运行良好,但在框架中失败。 这是我用来创建 managedObjectModel 的代码。 如果是框架,我得到 nil modelURL。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentDirectory = [paths lastObject];

    self.persistantStorePath = [documentDirectory stringByAppendingString:[NSString stringWithFormat:@"/%@.sqlite",name]];
    NSURL *storeURL = [NSURL fileURLWithPath:self.persistantStorePath];
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:name withExtension:@"momd"];

    self.managedObjectContext = [[NSManagedObjectContext alloc] init];
    self.managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

另外,我尝试了 [NSManagedObjectModel mergeModelFromBundles:nil],令人惊讶的是,它也有效。

我不知道为什么 Apple 文档在框架的情况下会失败

【问题讨论】:

【参考方案1】:

我想您的模型文件存储在框架包中。

调用[NSBundle mainBundle] 将返回应用程序包而不是框架包。

尝试改用[NSBundle bundleForClass:[AClassInYourFramework class]]

【讨论】:

谢谢。另一种方法是使用框架包名称来获取包

以上是关于核心数据模型 Url 在框架中为 Nil的主要内容,如果未能解决你的问题,请参考以下文章

使用核心数据生成的类作为模型对象......?

使用 nil 值获取和排序核心数据

如何快速测试框架中使用的核心数据模型

如何创建父实体和关系的核心数据模型

iOS - 核心数据模型与邮件框架冲突?

核心数据,NSPredicate,任何 key.path == nil