'NSInvalidArgumentException',原因:'*** - [NSURL initFileURLWithPath:]:nil string parameter'

时间:2014-03-21 05:36:33

标签: ios objective-c plugins ios7 nsurl

我正在摸索这里发生的事情.....打印插件无效...... 我正在尝试向应用程序添加打印机插件。在映射我的xml并加载html文件之后,我在Xcode中看不到错误。 但是,当我运行应用程序时,它会崩溃并且日志状态为:

  

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

我担心自从过去24小时后我无法克服它...任何帮助都会很棒......如果有人能让我知道如何在我的应用程序中使用打印机插件将会很好....我正在使用的代码是

// Set the base URL to be the www directory.
NSString* wwwFilePath = [[NSBundle mainBundle] pathForResource:@"www" ofType:nil];
NSURL*    baseURL     = [NSURL fileURLWithPath:wwwFilePath];

3 个答案:

答案 0 :(得分:11)

没有必要发布这么多代码。只需发布以下两行的相关代码:

NSString* wwwFilePath = [[NSBundle mainBundle] pathForResource:@"www" ofType:nil];
NSURL*    baseURL     = [NSURL fileURLWithPath:wwwFilePath];

问题是wwwFilePathnil,这意味着您的应用包中没有名为www的文件。

添加丢失的文件或使用正确的文件名更新pathForResource:ofType:调用中文件的名称。

BTW - 这两行可以简单地说是:

NSURL *basEURL = [[NSBundle mainBundle] URLForResource:@"www" withExtension:nil];

但你仍然需要传入有效的文件名/扩展名。

答案 1 :(得分:0)

原因在您的错误日志reason: '* -[NSURL initFileURLWithPath:]: nil中,您无法将nil参数传递给initFileURLWithPath:。只需检查并调用此方法,如下所示。

NSString* wwwFilePath = [[NSBundle mainBundle] pathForResource:@"www" ofType:nil];
if( wwwFilePath)
   NSURL*    baseURL     = [NSURL fileURLWithPath:wwwFilePath];

答案 2 :(得分:0)

根据您的源代码中的推荐,您声明www是一个目录。

// Set the base URL to be the www directory.
NSString* wwwFilePath = [[NSBundle mainBundle] pathForResource:@"www" ofType:nil];

我认为pathForResource不会将目录视为有效资源。请记住,资源是一个文件,此方法将尝试在给定的包中搜索具有该名称的资源。