-1

我试图重用一个使用数据核心的 xcodeproj。我将它导入到我的新项目中,当我尝试进行一些类初始化时,出现以下错误

'NSInvalidArgumentException',原因:' * -[NSURL initFileURLWithPath:]: nil string parameter' 设置 de managedObjectModel 时出错。

这是我的代码:

- (NSManagedObjectModel *)managedObjectModel {
    if (managedObjectModel == nil) {

        NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"DataModel" ofType:@"momd"];
        NSURL    *modelURL  = nil;

        if (modelPath == nil)
            modelPath = [[NSBundle mainBundle] pathForResource:@"DataModel" ofType:@"mom"];
        modelURL           = [NSURL fileURLWithPath:modelPath];
        managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    }

    return managedObjectModel;
}

导致错误的行是

modelURL           = [NSURL fileURLWithPath:modelPath];

看起来我找不到DataModel。我的数据模型文件称为 DataModel.xcdatamodel

有什么问题?我错过了什么重要的东西吗?

非常感谢。

4

3 回答 3

0

嗯,我解决了。

我必须在与我的 AppDelegate 相同的组中拥有我的 DataModel.xcdatamodel 的副本。所以我从另一个 xcodeproj 添加了它,最后它工作了

于 2012-09-10T10:33:53.477 回答
0

你正在nil进入fileURLWithPath.

从您的代码中,这意味着

   modelPath = [[NSBundle mainBundle] pathForResource:@"DataModel" ofType:@"mom"];

分配nilmodelPath,因此您可以查看数据模型文件的正确名称。

还要检查数据模型文件是否包含在您的目标中。

于 2012-09-10T09:19:35.050 回答
0

您的文件类型mom应该是momd.

然后尝试像下面那样打印 modelPath 或 modelURL 并检查它是否为 nil.you 将 nil 传递给 modelURL = [NSURL fileURLWithPath:modelPath];

 NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"DataModel" ofType:@"momd"];
        NSLog(@"%@",modelPath);

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"DataModel" withExtension:@"momd"];
    NSLog(@"%@",modelURL);
于 2012-09-10T09:23:17.623 回答