2017-05-11 4 views
-4
func parseResponseData(response: AnyObject) { 
    if let feedData = response["feed"] as? [String: Any]{ 
     let entryArray = feedData["entry"] as Any 
     if let entry = entryArray as? [Any]{ 
      for object in entry{ 
       print(object) 
       let appName = object["category"] as [String: Any] // Error: Type "Any" has no subscript members. 
      } 
     } 
    } 
} 

Je ne suis pas en mesure d'analyser la réponse à cause de cette erreur, aucune idée de la façon de résoudre ce problème.Type "N'importe lequel" n'a aucun membre indice lors de l'analyse JSON

JSON response

+0

essayez de caster 'object' à' [chaîne: Tous] ' – JuicyFruit

+0

double possible de [Parsing correctement JSON à Swift 3] (http://stackoverflow.com/questions/39423367/correctly-parsing-json-in-swift-3) – Larme

Répondre

0

essayer, entryArray est un tableau de String : Any

func parseResponseData(response: AnyObject) { 
    if let feedData = response["feed"] as? [String: Any]{ 
     let entryArray = feedData["entry"] as Any 
     if let entry = entryArray as? [[String: Any]] { 
      for object in entry { 
       print(object) 
       let appName = object["category"] as? [String: Any] 
      } 
     } 
    } 
} 
+0

Ça a marché! Merci @JuicyFruit pour le casting de type. C'était vraiment utile. –

+0

merci @vadian pour les typealias –

0

Vous devez dire au compilateur les types réels de tous les types de collecte indicés, Any ne suffit pas.

Il est utile d'utiliser un alias de type pour le dictionnaire JSON

typealias JSONDictionary = [String:Any] 

func parseResponseData(response: Any) { 
    if let feedData = response["feed"] as? JSONDictionary, 
    let entryArray = feedData["entry"] as? [JSONDictionary] { 
     for object in entryArray { 
      print(object) 
      if let category = object["category"] as? JSONDictionary { 
       print(category) 
      } 
     } 
    } 
}