【问题标题】:'-[NSURL initFileURLWithPath:]: nil string parameter' when using CoreData'-[NSURL initFileURLWithPath:]: nil string parameter' 使用 CoreData 时
【发布时间】:2011-07-01 23:13:34
【问题描述】:

我有一些模型类想用 CoreData 框架存储。我创建了 xcdatamodel 文件并将这些已经存在的类添加到 CoreData 模型文件中。我还从 XCode 的核心数据项目模板中复制了负责管理上下文等的代码。

现在我有如下代码(复制过来了,只是文件名改成了HistoryDataModel):

- (NSManagedObjectModel *)managedObjectModel {

   if (managedObjectModel != nil) {
       return managedObjectModel;
   }
   NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"HistoryDataModel"  ofType:@"momd"];
   NSLog(@"Model path:", modelPath);
   NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
   managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];    
   return managedObjectModel;
}

现在,当我运行此代码并尝试访问 CoreData 中的数据时,出现以下错误:

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[NSURL initFileURLWithPath:]: nil string parameter”

它发生在

NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"HistoryDataModel" ofType:@"momd"];

正在执行(模型路径为空字符串)。

任何想法我可能做错了什么? 谢谢!

【问题讨论】:

    标签: iphone core-data ios4


    【解决方案1】:

    你可以试试下面的sn-p,这会节省你很多时间:)

    managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
    

    它返回一个通过合并在所有包中找到的所有模型创建的模型(nil 参数)。您可以将参数设置为特定的捆绑包数组。

    【讨论】:

    • 谢谢尼克。我知道我错过了什么。
    【解决方案2】:

    您的核心数据模型是否已经版本化?如果不是,那么正确的扩展名应该是 mom

    要创建版本化模型,请选择模型并在菜单中运行设计/数据模型/添加模型版本。

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题,我是这样解决的: 这是我的旧代码

          [self.PDFWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:pdfFileName ofType:@"pdf"]]]];
      

      这是我解决的代码:

          [self.PDFWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:  [[NSBundle mainBundle]pathForResource:pdfFileName ofType:@"PDF"]]]];
      

      如您所见,第一行是 ofType:@"pdf" 而第二行是 ofType:@"pdf"。应用程序中包含的所有 pdf 文件都以 .PDF 结尾,因此在查找文件类型 pdf 时出现 nil 错误。

      明显的错误,但我认为 IOS 会足够聪明,可以同时检查 .pdf 和 .PDF,但我错了。也许这就是这个人遇到的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        • 2014-04-28
        • 1970-01-01
        相关资源
        最近更新 更多