objective-c - IOS开发了一个新应用,使用相同Bundle ID替换了旧应用,想延用旧的coredata数据,无法找到momd

浏览:74日期:2023-11-19

问题描述

客户原本有一个上线的app,因为不满意于是找我们重新开发了一个。现在开发基本完成了,客户提了一个新要求要延续旧App中的coredata数据。于是使用了与旧APP相同的Bundle ID与Bundle Name,拷贝了.xcdatamodeld文件到bundle请输入代码,用了一样的coredata代码,但是在managedObjectModel中无法获取momd的url。查看了一下bundle包内容,老的app中xcdatamodeld编译成了一堆momd文件夹,文件夹中有一堆mod文件。而新的app中xcdatamodeld没有编译,请问大神为什么这个文件夹会不存在?

- (NSManagedObjectModel *)managedObjectModel{ if (_managedObjectModel != nil) { return _managedObjectModel; } NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@'AirBoxModel' withExtension:@'momd']; NSLog(@'modelURL is %@', modelURL);//显示nil NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@'AirBoxModel.sqlite']; NSLog(@'storeURL is %@',storeURL); _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; return _managedObjectModel;}

问题解答

回答1:

我现在也遇到了这样子的问题,我是在用cocoapods导入了东西之后出现问题的。在.app文件里不生成.momd文件了,所以导致NSManagedObjectModel不能初始化,现在也没什么办法,只能在build phases->compile sources 里把xcdatamodeld导入进去了,本来系统生成的模型文件我还有用处的,但是找不到原因也只能这样了

回答2:

哈哈哈,编译出来了,十分感谢

相关文章: