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。
你能告诉我如何从 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。