【问题标题】:'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter''NSInvalidArgumentException',原因:'*** -[NSURL initFileURLWithPath:]:nil 字符串参数'
【发布时间】:2014-04-28 08:45:02
【问题描述】:

我对这里发生的事情摸不着头脑.....打印插件不起作用... 我正在尝试将打印机插件添加到应用程序..映射我的 xml 并加载 html 文件后,我在 Xcode 中没有看到错误。 但是,当我运行应用程序时,它会崩溃并且日志状态:

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

我很担心,因为自过去 24 小时以来我无法克服它......任何帮助都会很棒......或者如果有人可以让我知道如何让打印机插件在我的应用程序中准确运行会很好....我使用的代码是

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

【问题讨论】:

    标签: ios objective-c plugins ios7 nsurl


    【解决方案1】:

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

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

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

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

    顺便说一句 - 这两行可以简单地是:

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

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

    【讨论】:

    • 当我向方法添加有效的文件名/扩展名时,我得到的错误是由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSNull dataUsingEncoding:]:无法识别的选择器发送到实例...我迷路了...帮助
    • 您应该通过接受最佳答案来结束此问题,并将您的新问题作为新问题发布。记得发布相关代码并充分解释您的问题。
    【解决方案2】:

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

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

    【讨论】:

    • 当我向方法添加有效的文件名/扩展名时,我得到的错误是由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSNull dataUsingEncoding:]:无法识别的选择器发送到实例...我迷路了...帮助
    • 此错误在其他行中。您必须检查您的响应,因为您可能会收到空响应,但您尝试使用 NSNull 进行编码操作。检查您的代码。
    【解决方案3】:

    通过源代码中的推荐,您说www 是一个目录。

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

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

    【讨论】:

    • 当我向方法添加有效的文件名/扩展名时,我得到的错误是由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[NSNull dataUsingEncoding:]:无法识别的选择器发送到实例...我迷路了...帮助
    • 如果返回的对象为空,您需要检查例程的每一步,这将帮助您识别违规行。
    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多