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];
答案 0 :(得分:7)
我也有同样的问题:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'data parameter is nil'
但我已经解决了。原因是我的API网址不正确。请查看您的API网址。祝你好运!
答案 1 :(得分:6)
您发布的代码无需崩溃,但数据对象最终为nil
稍后在代码中的某个时刻,您可以访问data
。自data == nil
以来,应用程序崩溃了。
我建议输入
和
进入浏览器以了解情况
更新
问题是编码已编码的字符串。 (%的编码为%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];
可行,因为您的帖子已经正确编码了
答案 2 :(得分:1)
我有同样的问题,我在服务名称中找到一个大写字母,而实际上它在服务器上较低。我确实修改了URL中的名称并解决了问题。感谢。
答案 3 :(得分:1)
我认为应用程序在离线模式下崩溃并且您尝试了NSJSONSerialization数据。感谢
答案 4 :(得分:1)
就我而言,我忘记在App Transport Security Settings
中添加.plist
。
所以,只需转到.plist
并添加App Transport Security Settings
,然后Allow Arbitrary Loads
加入是。
答案 5 :(得分:0)
我遇到了同样的问题。我发现错误的产生是因为我使用NSURLSession下载某些内容的URL已经无效。删除操作解决了我的问题。