【问题标题】:NSManagedObjectMOdel fails to initialize on iOS 5 and aboveNSManagedObjectMOdel 无法在 iOS 5 及更高版本上初始化
【发布时间】:2012-09-14 22:11:34
【问题描述】:

我有一个项目,当我为 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 是否有任何改变会导致这种情况发生?

不管怎样,我已经运行了“分析”工具,没有报告内存泄漏或任何异常情况。

【问题讨论】:

    标签: iphone ios ios5 core-data


    【解决方案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;
    }
    

    【讨论】:

    • 但无法使用上述代码在 ios 4.3 中工作。在 ios 5 之上工作正常
    【解决方案2】:

    您实际上并没有描述崩溃或提供任何错误消息,但以下 StackOverflow 问题提供了可能有帮助的崩溃解决方案:

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

    【讨论】:

    • 我以为我们在这里有所作为,但没有这样的运气。不过我已经设法解决了这个问题。
    猜你喜欢
    • 2021-05-07
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多