'NSInvalidArgumentException',原因:'data parameter is nil'

use*_*909 9 iphone objective-c ios

XCode新手在这里,我一直试图弄清楚为什么会发生以下情况......

使用当前编写代码的方式,我不断获得'NSInvalidArgumentException'.

原因:xcode中的'data parameter is nil'.网址在浏览器上运行正常.

当我删除网址的"filters =%7B%22region%22%3A%22CA%22%7D"部分时,它在Xcode中工作正常,但是当包含该网址的这一部分时,就是我收到错误消息的时候.我已经尝试使用"替代%22但仍然没有.任何建议都非常感谢.

NSURL *url = [NSURL URLWithString:[@"http://api.v3.factual.com/t/restaurants-us?q=peets+coffee&filters=%7B%22region%22%3A%22CA%22%7D&KEY=p7kwKMFUSyVi64FxnqWmeSDEI41kzE3vNWmwY9Zi"stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSData *data = [NSData dataWithContentsOfURL: url];
Run Code Online (Sandbox Code Playgroud)

小智 7

我也有同样的问题:

因未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'data parameter is nil'

但我解决了它.原因是我的API网址不正确.请查看您的API网址.祝你好运!


Jes*_*ack 6

您发布的代码在没有崩溃的情况下工作,但数据对象最终成为了 nil

稍后在您访问的代码中的某个时刻data.因为data == nil,应用程序崩溃了.

我建议进入

http://api.v3.factual.com/t/restaurants-us?q=peets+coffee&filters=%7B%22region%22%3A%22CA%22%7D&KEY=p7kwKMFUSyVi64FxnqWmeSDEI41kzE3vNWmwY9Zi

http://api.v3.factual.com/t/restaurants-us?q=peets+coffee&KEY=p7kwKMFUSyVi64FxnqWmeSDEI41kzE3vNWmwY9Zi

进入浏览器以了解情况

UPDATE

问题是编码已编码的字符串.(%的编码为%25)

NSString *urlBase = @"http://api.v3.factual.com/t/restaurants-us?";
NSString *urlData = [@"q=peets+coffee&filters={\"region\":\"CA\"}&KEY=p7kwKMFUSyVi64FxnqWmeSDEI41kzE3vNWmwY9Zi"stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",urlBase,urlData]];
NSData* data = [NSData dataWithContentsOfURL: url];
Run Code Online (Sandbox Code Playgroud)

有效,因为您正在编码非编码字符串.

要么

NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"http://api.v3.factual.com/t/restaurants-us?q=peets+coffee&filters=%7B%22region%22%3A%22CA%22%7D&KEY=p7kwKMFUSyVi64FxnqWmeSDEI41kzE3vNWmwY9Zi"]];
NSData* data = [NSData dataWithContentsOfURL: url];
Run Code Online (Sandbox Code Playgroud)

会起作用,因为你的帖子是,你的字符串已经正确编码