2017-03-01 5 views
-1

Pouvez-vous me dire comment retourner [data] d'une session.uploadTask pour rendre [data] disponible pour plusieurs ViewControllers?Swift 3: comment renvoyer des valeurs hors de session.uploadTask

Mes classes:

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

A fait des recherches, c'est sûr. Sinon, je ne demanderais pas ... Pouvez-vous fournir un lien? – Jim

+0

Copie possible de [Swift: comment renvoyer une valeur dans une fonction d'analyse asynchrone?] (Http://stackoverflow.com/questions/27081062/swift-how-do-i-return-a-value-within-an -asynchronous-urlsession-function) – Moritz

Répondre

0

Le gestionnaire d'achèvement à appeler lorsque la demande de chargement est terminée. Ce gestionnaire est exécuté sur le gestionnaire d'achèvement du délégué prend les paramètres suivants:

données les données renvoyées par le serveur. réponse Objet fournissant des métadonnées de réponse, telles que les en-têtes HTTP et le code d'état. Si vous effectuez une requête HTTP ou HTTPS, l'objet renvoyé est en fait un objet HTTPURLResponse. erreur Un objet d'erreur qui indique l'échec de la demande ou zéro si la demande a réussi.

+0

ne comprend pas complètement :-(pouvez-vous me donner un exemple de code comment retourner mon dataArray? – Jim

+0

Plus d'aide? Je suis coincé :-( – Jim

+0

Avoir construit un gestionnaire de complétion. – Jim