2016-09-10 10 views
10

Im używam Swift 3 i Alamofire 4.0. Mogę wydrukować całą odpowiedź, ale mam problem z zapętleniem i wydrukowaniem każdej wartości. Otrzymuję "typ«NSFastEnumerationIterator.Element»(aka«any») nie ma członków indeksy dolne gdy próbuję wydrukować«tytuł»poniżej. Każda pomoc jest mile widziana.Swift 3 JSON NSFastEnumerationIterator nie ma członków indeksów domeny

Alamofire.request(url).responseJSON { response in 
     if let dict = response.result.value as? Dictionary<String, AnyObject> { 
      if let datas = dict["data"] as? NSArray{ 
       for data in datas{ 
        print("DEVELOPER: \(data)") 
         if let title = data["myTitle"] as? String{ 
          print(title) 
         } 

       } 
      } 
     } 
    } 
+0

nie otrzymuję poprawnie pytania !! – Lion

+0

@KetanParmar Otrzymuję komunikat o błędzie "Typ" NSFastEnumerationIterator.Element "(alias" Any ") nie ma członków indeksów". Błąd występuje, gdy próbuję wydrukować "tytuł". – kelsheikh

Odpowiedz

29

Wystarczy użyć natywnej Swift Array . Użyj zawsze Swift rodzimych typów, chyba że masz żadnego wyboru. NSArray brakuje wpisać informację więc kompilator nie można wnioskować, że tablica zawiera słowniki.

if let datas = dict["data"] as? [[String:Any]] { 
+0

Dziękuję bardzo, to było absolutnie to. – kelsheikh

+0

Dziękuję bardzo za tę odpowiedź !!! – Hiren

0

Czasami chcesz zachować swoje dane jako zorganizowany, wszystko co musisz zrób to, sprawdź sam słownik ile w pętli wygląda następująco:

for apple in apples { 
if let _ = apple as? [String:AnyObject] { 
// do whatever you like here 
    } 
} 
+0

Zgadzam się, ale użycie tablicy [[String: AnyObject]] pozbawiłoby Cię wszystkich użytecznych funkcji do niej dołączonych. Dodawanie, usuwanie, znajdowanie w indeksie i etc ... – Giggs