【问题标题】:Nil return value from fileURLWithPath来自 fileURLWithPath 的 Nil 返回值
【发布时间】:2014-02-05 15:30:03
【问题描述】:

我最近完成了一个应用程序项目,该项目主要由 webView 中的 html 文件组成。

现在我设置了另一个项目并复制了相关的代码片段,但应用程序崩溃并显示以下错误消息:

* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[NSURL initFileURLWithPath:]: 零字符串参数'

这是代码:

NSString *path01 = [[NSBundle mainBundle] pathForResource:@"01-a" ofType:@"html" inDirectory:@"htdocs"];
NSURL *url01 = [NSURL fileURLWithPath:path01];
NSURLRequest *request01 = [NSURLRequest requestWithURL:url01];
[webView01 loadRequest:request01];

我猜问题是文件引用,但一切都在它的位置,但结果总是 NIL。

我已经搜索过这个问题,我将文件导入 xcode 的方式似乎有问题,但我无法修复它。是否有一个简单的技巧可以让 xcode 正确导入文件夹“htdocs”?

提前谢谢...

【问题讨论】:

  • Xcode 不返回任何内容;它是一个 IDE,而不是一个方法。这与 Xcode 无关。
  • 是的,对,但是由于问题出现在xcode中,并且xcode中的引用明显有问题,所以标记是正确的。

标签: objective-c xcode5 directory nsurl


【解决方案1】:

确保将文件 01-a.html 复制到您的应用程序包中。这可以通过构建应用程序时的复制文件/复制捆绑资源阶段来实现。崩溃表明该文件从包中丢失,因此返回 nil 值。在这种情况下,您应该检查 nil。

【讨论】:

  • 见鬼,它奏效了。谢谢。但我仍然不明白发生了什么,因为我之前也做过同样的事情(至少 2 次)。
  • 也许那时干净的构建已经有所帮助。有时会发生巫术。
【解决方案2】:
NSURL *url01 = [NSURL fileURLWithPath:path01];

唯一的参数是path01,那么让我们看看它来自哪里

NSString *path01 = [[NSBundle mainBundle] pathForResource:@"01-a" ofType:@"html" inDirectory:@"htdocs"];

这意味着您的资源中没有文件htdocs/01-a.html

请注意,xcode 会扁平化资源结构,因此您可能只想删除 inDirectory 参数。

【讨论】:

  • 谢谢,导入目录时有些混乱,它没有被复制到包中。它现在工作得很好。
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 2015-03-13
相关资源
最近更新 更多