2016-11-20 7 views
0

проблемы с Rest API в Swift 3. Вот мой код:Swift 3 Rest API не работает

func getData() 
{ 
    let urlString = "http://dataservice.accuweather.com/locations/v1/regions?apikey=QVU3TATgJEdRyojFze6zivdrmiln9XlA" 

    let config = URLSessionConfiguration.default // Session Configuration 
    let session = URLSession(configuration: config) // Load configuration into Session 
    let url = URL(string: urlString)! 

    let task = session.dataTask(with: url, completionHandler: { 
     (data, response, error) in 

     if error != nil { 

      print(error!.localizedDescription) 

     } else { 

      do { 
       print("in do block") 
       if let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any] 
       { 
        print("if condition is true") 
        //Implement your logic 
        print(json) 

       } else 
       { 
        print("Error in json serial") 
       } 

      } catch { 

       print("error in JSONSerialization") 

      } 


     } 

    }) 
    task.resume() 
} 

После выполнения я могу видеть следующие операторы печати:

в сделать блок Ошибки в сыне serial

Не могу понять, что не так с командой JSON Serialization здесь. Ожидаемые ответы - это массив JSON. Любая помощь будет оценена по достоинству. Thx

+0

Попробуйте распечатать значение 'data' перед попыткой сериализации –

+0

« данные »в порядке. преобразован в строку и распечатал ее. может видеть мою строку json. – Sri

+0

Попробуйте изменить параметры '.mutableContainers', а также взгляните на это: http://stackoverflow.com/a/39520853/4656341 – damiancesar

ответ

0

Изменить if let json = try JSONSerialization.jsonObject(with: data!, options:[]) as? [String: Any]

Для

if let json = try JSONSerialization.jsonObject(with: data!, options:[]) as? [Any] 

, то потому что у вас есть JSON является "jsonWithArrayRoot" проверить это для получения более подробной информации. https://developer.apple.com/swift/blog/?id=37

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