使用MagicalRecord中遇到的一些问题

2019-11-13  本文已影响0人  ExcaliburC

在SDK中使用CoreData时,选择了使用MagicalRecord,按流程操作后,在使用MR_findAll等方法时,程序崩溃,错误信息如下

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.'

经检查,发现是使用SDK的TARGETS->Build Phases->Copy Bundle Resources中没有加入model.xcdatamodeld,加入后,程序不再崩溃。
由于SDK要提供给第三方,需要将model.xcdatamodeld加入bundle中后,供MagicalRecord使用。
采用如下方法
1.找到bundle

NSString *myBundlePath = [[NSBundle mainBundle] pathForResource:@"myBundlePath" ofType:@"bundle"];
NSBundle *myBundle = [NSBundle bundleWithPath:myBundlePath];

2.合并项目和SDK中的所有模型创建一个NSManagedObject模型。这简化了保存,我们可以用一个单独的persistent store来保存一个单独的managed object model。

NSArray * bundles = [NSArray arrayWithObjects:[NSBundle mainBundle],myBundle,nil];
NSManagedObjectModel * models = [NSManagedObjectModel mergedModelFromBundles:bundles];
[MagicalRecord setShouldAutoCreateManagedObjectModel:NO];
[NSManagedObjectModel MR_setDefaultManagedObjectModel:models];

3.初始化MagicalRecord

[MagicalRecord setupCoreDataStackWithStoreNamed:@"MySDKData.sqlite"];

经测试,demo正常运行。

上一篇下一篇

猜你喜欢

热点阅读