0

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

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

4

2 回答 2

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;
}
于 2012-09-15T17:00:00.720 回答
0

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

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'* -[__NSArrayM insertObject:atIndex:]: object cannot be nil

于 2012-09-14T22:55:32.903 回答