我有一个项目,当我为iOS 4.x构建它时工作正常,但是当我为iOS 5.x构建崩溃时它失败了。为了澄清一下,4.x版本将在iOS 5.1上正常运行,但是当我针对5.0或5.1进行构建时,我会遇到下面描述的崩溃。
- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel == nil)
{
__managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain]; //crash
}
return __managedObjectModel;
}
我检查了文档,并且据说提供nil
参数应该默认为主包。任何人都知道CoreData会发生什么变化会导致这种情况发生吗?
为了它的价值,我运行了“分析”工具,没有内存泄漏或报告任何异常。
答案 0 :(得分:1)
我设法解决了问题。我创建了一个新的单视图项目,然后复制生成的代码以将托管对象模型初始化为我的新项目。我的预感是[[NSManagedObjectModel mergedModelFromBundles:nil]
在iOS 5.1 SDK中的工作方式不同,也许它无法找到我的数据模型,因为它没有存储在项目根目录中,而是存储在单独的“数据”文件夹中。
- (NSManagedObjectModel *)managedObjectModel
{
if (__managedObjectModel != nil)
{
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"PreferencesModel" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
答案 1 :(得分:0)
您实际上并未描述崩溃或提供任何错误消息,但以下StackOverflow问题可以帮助解决崩溃问题: