我已将所有业务逻辑移至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的正确方法。
提前致谢。
答案 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"];