swift - 为什么 URL 会话不会按应有的顺序执行?
问题描述
所以我一直认为代码会从上到下执行。例如:
var1 = "one"
var2 = "two"
var3 = "three"
这一切都有效,但我还有另一个变量“数据”需要填充。这是它的功能。
@objc func getData()
{
print("inside")
let url: URL = URL(string: self.urlPath)!
let defaultSession = Foundation.URLSession(configuration: URLSessionConfiguration.default)
let task = defaultSession.dataTask(with: url) { (data, response, error) in
if error != nil {
print("Error")
}else {
print("downloaded")
self.downloadResult = String(data: data!, encoding: String.Encoding.utf8) as String!
self.data = self.downloadResult
.components(separatedBy: "\n")
.map { $0.components(separatedBy: "\t") }
self.header = self.data[0]
self.data = Array(self.data.dropFirst())
self.data = Array(self.data.dropLast())
}
}
task.resume()
//spreadsheetView.reloadData()
}
所以如果我想完成这个,我只需要在我的其他变量之后添加它,对吗?像这样:
var1 = "one"
var2 = "two"
var3 = "three"
getData()
但是不,它似乎没有这样做。具体来说,getData() 中的“任务”将不会执行——但打印“内部”语句将打印。有人可以解释为什么 urlsession 任务不会执行吗?
在一切都初始化之后,只有这样完整的 getData 函数才能完整地工作。但我需要之前填充我的数据变量。我不明白。任何见解将不胜感激。我在 Xcode9.2 上使用 Swift 4。谢谢!
解决方案
推荐阅读
- vue.js - 如何从数组中删除括号
- c++ - 为什么 new[] 表达式会调用析构函数?
- javascript - 将 AJAX 结果分配给变量(Vanilla JS)
- php - PHP - 如何只在循环中发布选中的复选框?
- excel - 如果 Word 在读取 Excel 文件时崩溃,请关闭 Excel 应用程序
- typescript - 在打字稿中使用类而不是枚举更有效吗?
- php - 我每天收到太多查询 YouTube 数据 API v3
- algorithm - 将递归函数调用转换为具有成本效益的表示
- python - 将json数据(未定义/混乱)转换为DataFrame的正确方法是什么?
- forms - 访问 VBA 以连续形式更改图像