2016-09-05 6 views
0

Я пытаюсь скомпилировать на устройстве, но я получаю эту ошибку. Любая помощь?. В симуляторе отлично работает.Неоднозначное использование индекса. Array Swift IOS

Я получаю двусмысленное использование индексной ошибки в следующем коде и надеялся, что кто-то еще столкнулся с этим и узнал об исправлении.

case .Success: 
       if response.response?.statusCode == 200 { 
         print ("Respuesta 200") 
        if let value = response.result.value { 

         let respuestaJSON = JSON(value) 
         let objsonUSUARIOS = respuestaJSON["d"].object 
         let arrayUsuarios = objsonUSUARIOS["results"]! 
         //print ("Usuarios: ",String(arrayUsuarios)) 

         for i in 0 ..< arrayUsuarios!.count{ 
          let boletines = boletinJSON() 

          if let item = arrayUsuarios![i] as? [String: AnyObject]{ 
           ) 

           if let person = item["Title"] as? String 
           { 
            boletines.name = person 

           } 

           if let person = item["Portada"] as? String 
           { 
            boletines.imagen = person 

           } 

           if let person = item["Created"] as? String 
           { 
            boletines.fecha = person 
           } 

           if let person = item["AttachmentFiles"] as? [String: AnyObject] { 
            if let itemAttach = person["__deferred"] as? [String: AnyObject]{ 
             if let itemdeferred = itemAttach["uri"] as? String { 
              boletines.urldescarga = itemdeferred 
             } 
            } 
           } 

           self.boletin.append(boletines) 
           self.view.hideToastActivity() 

          } 

         } 



        } 
         self.tableView.reloadData() 

        // self.view.hideToastActivity() 
       } 

ответ

3

Сообщить компилятор, что посредник объект objsonUSUARIOS имеет типа

let objsonUSUARIOS = respuestaJSON["d"].object 

После вышеприведенного утверждения, что компилятор не знает, какой объект он имеет дело. Поэтому убедитесь, что вы можете сделать все отливку, как показано ниже

let objsonUSUARIOS = respuestaJSON["d"].object as! Dictionary 
let arrayUsuarios = objsonUSUARIOS["results"]! as! Array 
+0

ok Спасибо, но в этой строке «let arrayUsuarios = objsonUSUARIOS [" results "]! As! NSDictionary" i get "Не могу отличить значение типа '__NSCFArray' (0x10a907d68) от 'NSDictionary'", когда я изменил "объект" для ".object as! NSDictionary" – FireUser

+1

Отправляйте его в 'Array'. 'let arrayUsuarios = objsonUSUARIOS [" results "]! в виде! NSArray' – pkc456

+1

Пожалуйста, не предлагайте 'NSArray/NSDictionary'. Используйте Swift родные типы – vadian

2

Проблема заключается в том, что вы не указали тип объекта arrayUsuarios является Array, поэтому постарайтесь явного типа бросить arrayUsuarios массив

let arrayUsuarios = objsonUSUARIOS["results"] as! [[String: AnyObject]] 
+0

отлично, но я получаю это объявление: Условный перевод из '[String: AnyObject]' в '[String: AnyObject]' всегда преуспевает – FireUser

+0

Вместо 'if let item = arrayUsuarios! [i] as? [String: AnyObject] {'просто напишите вот так: item = arrayUsuarios! [I]' –

+0

i изменено, но я получаю Не могу заставить разворачивать значение необязательного типа '[[String: AnyObject]]' – FireUser

Смежные вопросы