从Custom Framework访问Coredata时应用程序崩溃

时间:2016-08-25 06:48:15

标签: ios objective-c core-data

我已将所有业务逻辑移至Custom框架项目。作为其中的一部分,我已将xcdatamodeld也移动到框架项目中。即使我已经将核心数据模型移动到框架项目,当我尝试从框架中访问核心数据模型对象时,应用程序也会崩溃。

- (NSManagedObjectModel *)managedObjectModel {
// The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
if (_managedObjectModel != nil) {
    return _managedObjectModel;
}

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"IHA" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

return _managedObjectModel;

}

在上述情况下发生的事情是modelURL变为零。任何人都可以建议我在自定义框架中使用CoreData的正确方法。

提前致谢。

1 个答案:

答案 0 :(得分:1)

由于您已将所有内容移至您的框架中,因此您的Core Data模型不再位于您应用的主要捆绑包中,而是在框架的捆绑包中。

为了从您的框架中获取该捆绑包,您可以执行以下操作之一

NSBundle *frameworkBundle = [NSBundle bundleForClass:[self class]]; // Only works if the current class is part of your framework
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.yourframework.identifier"];

然后

NSURL *modelURL = [frameworkBundle URLForResource:@"IHA" withExtension:@"momd"];