Swift: 无法从 API 闭包中获取数据

Swift: Can't fetch data from API Closure

我是 Swift 的初学者。我正在尝试制作应用程序以从 Django 服务器获取数据。但是我卡在了从 Closure 中获取数据,我的代码如下:

var datasource: [Vender] = []

override func vieDidLoad() {
   super.viewDidLoad() 
   loaddata()
   print(datasource) //#1 print
}
 
func loadata(){ 
    VenderAPI(method: "GET", endpoint: "vender", APIportocol: Vender(), index: "") {
    Result in 
      switch Result {
        case .failure(let error):
          print(error.localizedDescription)
        case .success(let APIdata):
          for data in APIdata {
            self.datasource.append(data)
         }
     }
  print(self.datasource) //#2 print
}

我的问题是,我可以获得#2 打印(来自服务器的更正数据和格式),但不能获得#1 打印(始终为空)。 有人可以帮助我吗?它困扰了我很长时间。我会很感激的。

如@Larme 所述,您需要处理异步函数。阅读它。 试试这个方法:

override func viewDidLoad() {
    super.viewDidLoad()
    loaddata() { done in  // <--- here
        print(datasource) // print when all work is done
    }
}
 
func loadata(completion: @escaping(Bool) -> ()) {  // <--- here
    VenderAPI(method: "GET", endpoint: "vender", APIportocol: Vender(), index: "") {
        result in
        switch result {
        case .failure(let error):
            print(error.localizedDescription)
        case .success(let APIdata):
            for data in APIdata {
                self.datasource.append(data)
            }
        }
        completion(true)  // <--- here
    }
}