2017-03-01 53 views
-1

请你可以告诉我如何将[data]从session.uploadTask中退出或在oder中使[数据]可用于多个ViewControllers?Swift 3:如何返回session.uploadTask的值

我的课:

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 


} 
} 
+0

已经做了研究,当然。否则,我会尼特问...你能提供一个链接? – Jim

+0

[Swift:如何在异步的urlsession函数中返回一个值?]可能的副本(http://stackoverflow.com/questions/27081062/swift-how-do-i-return-a-value-within-an -asynchronous-urlsession-function) – Moritz

回答

0

完成处理负载请求完成时调用。此处理程序在委托队列上执行。此完成处理程序采用以下参数:

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

+0

不能完全理解:-(你能给我一个代码示例如何返回我的dataArray? – Jim

+0

任何进一步的帮助吗?我被困住了:-( – Jim

+0

已经建立了一个完成处理程序.Thx – Jim