Swift 3: 如何从 session.uploadTask 中得到 return 值

Swift 3: how to return values out of session.uploadTask

你能告诉我如何从 session.uploadTask 中 return [数据] 以便使 [数据] 可用于多个 ViewControllers 吗?

我的类:

class data {
  var name1: String = ""
  var name2: String = ""
  ...
}

class fetchData {
  var url: String = ""
  var body: String = ""
  ... 

 func getDataFromServer (apiParrameters,...) -> [data] {
    var dataArray = [data]()     
    session.uploadTask() {
    // fetching the [data
    ...
    // adding [data]
    ... dataArray.append(data(name1: name1String, name2: name2String)) ...

   //Where to retun(dataArray)? In session.uploadTask it is not possible/accespted
   /* in OperationQueue.main.addOperation({
        //return(dataArray) is not possible
        })*/
 }
 resume(uploadTask)
 //return(dataArray) at this point results in an empty dataArray


 }
}

加载请求完成时调用的完成处理程序。此处理程序在委托 queue.This 上执行,完成处理程序采用以下参数:

数据 服务器返回的数据。 回应 提供响应元数据的 object,例如 HTTP headers 和状态代码。如果您发出 HTTP 或 HTTPS 请求,则返回的 object 实际上是一个 HTTPURLResponse object。 错误 指示请求失败原因的错误 object,如果请求成功则为 nil。