Так что я всегда думал, что код будет выполняться сверху вниз. Например:
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 () не будет выполнена, однако будет напечатан оператор print «inside». Может кто-нибудь объяснить, почему задача urlsession не будет выполняться?
После того, как все будет инициализировано, только тогда полная функция getData будет работать в полном объеме. Но мне нужно заполнить переменную данных раньше. Я не понимаю Любое понимание будет с благодарностью. Я использую Swift 4 на Xcode9.2. Спасибо!