2012-03-07 69 views
9

xcode新手在这里,我一直在试图找出为什么发生以下情况... 随着代码当前写入的方式,我不断收到'NSInvalidArgumentException' ,原因:xcode中'数据参数为零'。该网址在浏览器上正常工作。当我删除url中的“filters =%7B%22region%22%3A%22CA%22%7D”部分时,它在xcode中工作正常,但是当url的这部分包含时,就是当我收到错误消息。我在更换%22,但仍然没有使用\”尝试。任何建议都非常赞赏。'NSInvalidArgumentException',原因:'数据参数为零'

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]; 
+0

”filters =%7B%22region%22%3A%22CA%22%7D的实际值是多少“? – Nirmalsinh 2017-02-13 13:12:12

回答

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]; 

工作,因为您正在编码一个非编码的字符串。

OR

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]; 

会因为工作作为你的职位是,您的字符串已经正确编码

+0

当我拿出过滤器=%7B%22%22%3A%22CA%22%7D时,程序可以正常工作而不会崩溃。问题必须来自过滤器=%7B%22%22%3A% 22CA%22%7D对吗?你认为xcode是以整数读数%22吗? – user1254909 2012-03-07 18:41:54

+0

@ user1254909问题在于已经对字符串进行了编码并重新进行了编码。 – 2012-03-07 21:50:17

7

我也有同样的问题:

终止应用程序由于未捕获的异常' NSInvalidArgumentException',原因:'数据参数为零'

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

1

我有同样的问题,我发现服务名称中的一个单词大写,而实际上它在服务器上较低。我确实修复了URL中的名称,问题得到解决。谢谢。

1

我认为应用在离线模式下崩溃,并且您试图对NSJSONSerialization数据进行尝试。谢谢

0

我有同样的问题。我发现这个错误是由于我用来使用NSURLSession下载一些东西的URL已经失效而产生的。删除操作解决了我的问题。

1
在我的情况


我忘了在“的.plist”
刚去”增加“应用交通运输安全设置”。plist“并添加”App Transport Security Settings“,然后”允许任意负载“为”是“
它对我有效

相关问题