【发布时间】:2017-05-15 18:38:10
【问题描述】:
我有一个从 API 请求中检索数据的方法:
let session = URLSession.shared
let url = URL(string: "http://eventregistry.org/json/article?conceptUri=http%3A%2F%2Fen.wikipedia.org%2Fwiki%2FAfghanistan&lang=eng&action=getArticles&articlesSortBy=date&resultType=articles")!
let task = session.dataTask(with: url) { (data, _, _) -> Void in
if let data = data {
print(JSON(data: data))
completion()
}
}
task.resume()
该链接在通过浏览器访问时完美运行,但是在 XCode 中逐行调试时,let task = session.dataTask 中的任何代码都不会执行,因此打印不会打印在日志中。
我正在通过模拟器运行,并且我的笔记本电脑有互联网,我只是不确定为什么这不起作用。
有人知道为什么吗?
【问题讨论】:
-
当你说“逐行调试”时,你是在让runloop运行吗?
-
@Ssswift 抱歉,没有设置。它现在已执行但由于某种原因检索到的 JSON 为空?尽管在浏览器中发出请求时,它会从请求中检索所有数据
-
我将它粘贴到 Xcode 中的一个新项目中,将打印/完成行更改为
data.count的简单 NSLog(因为我不知道您的“JSON”类/结构是什么),并将“http”更改为“https”(根据 Xcode 的警告),然后运行它。它显示返回 15594 个字节。我什至在完成处理程序中放置了一个断点,它被触发了。您能否更具体地说明您是如何在调试器中运行它的? -
@Ssswift 嗯,我的返回 70 个字节:/? JSON 类由库“SwiftyJSON”提供,我使用模拟器运行它,该模拟器在 viewDidLoad() 上调用此函数>
-
你试过不需要模拟器的项目吗?听起来很可疑,好像您的问题不是代码,而是模拟器对您的网络请求所做的事情。