无法在 iOS 中获取 JSON 数据
Posted
技术标签:
【中文标题】无法在 iOS 中获取 JSON 数据【英文标题】:Not able to fetch JSON data in iOS 【发布时间】:2014-10-03 16:01:17 【问题描述】:我将在这里发布我的代码:
NSString *string=[NSString stringWithFormat:@"https://api.fda.gov/drug/event.json?limit=25"];
NSLog(@"string:%@",string);
NSURL *url=[NSURL URLWithString:string];
NSLog(@"url %@",url);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
NSData *data=[NSData dataWithContentsOfURL:url];
NSLog(@"data:%@",data);
[self performSelectorOnMainThread:@selector(fetcheddata:) withObject:data waitUntilDone:YES];
);
-(void)fetcheddata:(NSData *)
上面的代码之前对我有用。我不知道发生了什么,它现在不起作用。当我在浏览器中粘贴 URL 时,它正在工作。请在这种情况下指导我。它显示数据参数为 nil,异常为 NSInvalidArgumentException。
【问题讨论】:
你的代码对我有用,我总是在 3 秒后得到数据。 我创建了新项目并在 viewdidload 中再次编写了代码,但它仍然对我不起作用。我正在使用 Xcode 6 ios8。 我也是用 Xcode 6 和 iOS 8,你能分享你的代码吗? 【参考方案1】:更改以下行
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
与
dispatch_sync(dispatch_get_main_queue(), ^
【讨论】:
它仍然无法正常工作。我感谢您的帮助。我认为这不是因为 dispatch_async 代码行。 我认为您需要将完整的 url 代码粘贴到 dispatch_synch 中。请像这样尝试 顺便问一下你的dispatch_async和我的有什么区别? 好吧,我听说有人试图从Web服务获取数据时,建议不要去主线程。如果在有大量数据时使用主线程来获取它,那么应用程序将在一段时间内不会响应,直到它获取数据。如果我错了,请纠正我。 是的,它是正确的,但是如果您在 ui 中更新相同的内容,那么它应该在主线程中。如果不是,那么你的代码是好的。以上是关于无法在 iOS 中获取 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Swift 5 (iOS) 从 Firebase 数据库中获取和打印单个值