无法在 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 数据库中获取和打印单个值

无法解析从 iOS 中的 PHP 获取的 JSON

无法加载 JSON 数据

在 userModel | 查看提交的数据json 但无法获取数据

在 iOS 中调用 Paypal 时无法获取访问令牌

无法在 JSON-SERVER 中获取对象键数据