NSManagedObjectMOdel无法在iOS 5及更高版本上初始化

时间:2012-09-14 22:11:34

标签: iphone ios ios5 core-data

我有一个项目,当我为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会发生什么变化会导致这种情况发生吗?

为了它的价值,我运行了“分析”工具,没有内存泄漏或报告任何异常。

2 个答案:

答案 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问题可以帮助解决崩溃问题:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[__NSArrayM insertObject:atIndex:]: object cannot be nil