2014-06-10 10 views
37

Otrzymuję dane z iTunes API z AFNetworking i chcę utworzyć słownik z odpowiedzią, ale nie mogę tego zrobić.Przesyłanie AnyObjecta do słownika

Błąd: Nie można przekonwertować typu wyrażenia jest „słownik” wpisać „Hashable”

To jest mój kod:

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) 
      }) 

    } 

Odpowiedz

103

Po zdefiniowaniu Dictionary w Swift trzeba dać klucz i wartość typy także. Coś jak:

var jsonResult = responseObject as Dictionary<String, AnyObject> 

Jeśli obsada nie powiedzie się, jednak, dostaniesz błąd wykonania - jesteś lepiej z czymś jak:

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

Dzięki Nate! To działa! Swift jest dla mnie trochę dziwny ... Muszę więcej ćwiczyć, dzięki jeszcze raz! – dpbataller

+0

Jak przypisać wartość z jsonResult do lokalnego ciągu? zmienna? – Sean

+2

Nie można przypisać żadnej wartości do jsonResult, ponieważ słowo kluczowe "let" oznacza ją jako niezmienną. Będziesz musiał użyć nowego skopiowanego obiektu. – lomokat