2014-06-10 60 views
37

Ricevo i dati dall'API di iTunes con AFNetworking e voglio creare un dizionario con la risposta ma non posso farlo.Trasmetti AnyObject al dizionario in swift

Errore: Impossibile convertire dell'espressione tipo "dizionario" di tipo "hashable"

Questo è il mio codice:

func getItunesStore() { 

     self.manager.GET("https://itunes.apple.com/es/rss/topfreeapplications/limit=10/json", 
      parameters: nil, 
      success: { (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in 
       var jsonResult: Dictionary = responseObject as Dictionary 

      }, 
      failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in 
       println("Error:" + error.localizedDescription) 
      }) 

    } 

risposta

103

Quando si definisce un Dictionary a Swift devi dare i tipi di chiavi e valori anche. Qualcosa di simile:

var jsonResult = responseObject as Dictionary<String, AnyObject> 

Se il cast non riesce, tuttavia, si otterrà un errore di runtime - si sta meglio con qualcosa di simile:

if let jsonResult = responseObject as? Dictionary<String, AnyObject> { 
    // do whatever with jsonResult 
} 
+0

Grazie Nate! Funziona! Swift è un po 'strano per me ... Ho bisogno di esercitarmi molto di più, grazie ancora! – dpbataller

+0

Come assegno un valore da jsonResult a una stringa locale? variabile? – Sean

+2

Non è possibile assegnare alcun valore a jsonResult poiché la parola chiave let lo contrassegna come immutabile. Dovrai usare un nuovo oggetto copiato. – lomokat

Problemi correlati