2016-09-10 3 views
2

Я просто обновлен до Xcode 8.0/Swift 3 и я получаю это сообщениеНеоднозначность ссылка на члена «подстрочный» при разборе JSon

неоднозначных ссылку на член «индексного»

на этом line:

let rootResults = rootDictionary ["results"] as? [[NSObject: AnyObject]]

Остальная часть кода приведен ниже:

func parseJSON(data: NSData) { 
    do { 
     let json = try JSONSerialization.jsonObject(with: data as Data, options: .mutableContainers) 
     if let rootDictionary = json as? [NSObject: AnyObject], 
      let rootResults = rootDictionary["results"] as? [[NSObject: AnyObject]] 
     { 

      for childResults in rootResults { 

       if let firstName = childResults["first_name"]! as? String { 
        let customerFirstName = firstName 
        customerData["firstName"] = customerFirstName 
       } 
       if let lastName = childResults["middle_name"]! as? String { 
        let customerLastName = lastName 
        customerData["middleName"] = customerLastName 
       } 
       if let lastName = childResults["last_name"]! as? String { 
        let customerLastName = lastName 
        customerData["lastName"] = customerLastName 
       } 
       if let nameSuffix = childResults["name_suffix"]! as? String { 
        let customerSuffix = nameSuffix 
        customerData["nameSuffix"] = customerSuffix 
       } 

      } 
     } 
    } catch { 
     print(error) 
    } 
} 

Я посмотрел на другие вопросы, подобные этим, но они о чем-то, не связанного с JSon разборе. Буду признателен за любую помощь по этому вопросу. Спасибо!

ответ

4

В Swift 3 большинство неявных преобразований типов удаляются. Это привело к тому, что строковые литералы не могут быть автоматически преобразованы в NSObject.

Попробуйте заменить [NSObject: AnyObject] в своем коде на [String: AnyObject].

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