2017-08-18 1 views
0

J'utilise Alamofire pour remplir un TableView. Ceci est un extrait de code de mon:Alamofire mauvais ordre de réponse JSON

var arrRes = [[String:AnyObject]]() 
     Alamofire.request(api_url5).responseJSON { (responseData) -> Void in 
      if((responseData.result.value) != nil) { 
       let swiftyJsonVar = JSON(responseData.result.value!) 

       if let resData = swiftyJsonVar["data"].arrayObject { 
        self.arrRes = resData as! [[String:AnyObject]] 
        print (api_url5) 
        print (self.arrRes) 
       } 
       if self.arrRes.count > 0 { 
        self.tblDetail.reloadData() 
       } 
      } 
     } 

La demande a un paramètre « de tri » qui sort le bon ordre dans Postman. Mais les éléments de la table sont dans le mauvais ordre et la sortie que je reçois avec print (self.arrRes) aussi.

Comment puis-je conserver la commande que je reçois de mon API?

Commander Postman:

{ 
    "data": [ 
     { 
      "we": "text", 
      "de": "text", 
      "se": "text", 
      "ve": "text", 
      "qe": "text", 
      "ne": "text" 
     }, 
{ 
      "we": "wer", 
      "de": "wer", 
      "se": "wer", 
      "ve": "wer", 
      "qe": "wer", 
      "ne": "wer" 
     } 
    ] 
} 

Commander la console:

{ 
    "data": [ 
    { 
      "we": "wer", 
      "de": "wer", 
      "se": "wer", 
      "ve": "wer", 
      "qe": "wer", 
      "ne": "wer" 
     }, 
     { 
      "we": "text", 
      "de": "text", 
      "se": "text", 
      "ve": "text", 
      "qe": "text", 
      "ne": "text" 
     } 

    ] 
} 
+0

@Francis Ils pourraient s'inverser, pouvez-vous essayer de l'obtenir pour retourner plus de 2 articles? – TNguyen

+0

@ TPN1994 même si je retourne plus de 2 articles, l'ordre est faux. Mais sans motif, juste mélangé ... – Francis

+0

Pourriez-vous utiliser 'JSONSerialization' sur' responseData.result.value' au lieu de SwiftyJSON? Juste pour vérifier si c'est la demande ou le SwiftyJSON le coupable. Aussi pourriez-vous imprimer 'swiftyJsonVar' aussi? Peut-être '' swiftyJsonVar ["data"] 'être sûr? – Larme

Répondre

0

Vous devez ajouter le paramètre de tri que vous utilisez dans postier à votre demande api:

Alamofire.request(api_url5, parameters: ["sort":"true"]).responseJSON { 
+0

Est-ce que cela fonctionne si mon api_url5 est: http: //myserver/api/v1/api.php? ... request ... & sort = true? – Francis

+0

@Francis Eh bien, si vous l'avez déjà mis dans l'url il n'y a pas besoin de le mettre dans les paramètres ... Cette requête est-elle absolument identique à celle que vous utilisez avec le facteur? –

+0

c'est exactement la même URL. Pourquoi Alamofire mélange-t-il la réponse de l'API? – Francis