Данные не извлекаются из JSON Swift - PullRequest
1 голос
/ 08 июля 2019

Я много чего перепробовал, и все они, похоже, не работают.У меня есть этот JSON [{"id":"1","name":"Dua Kumayl","location":"IABAT","date":"2019-06-13","Islamic":"Shawwal 8,1440","time":"19:30:00.000000","imageURL":""] по этой ссылке: http://iabat.org/data.php, и я попытался получить данные в Swift, используя этот код:

import UIKit
   struct Event: Decodable {
       let id, name, location, date: String
       let Islamic, time, imageURL: String
    }
   class EventsViewController: UIViewController {
         override func viewDidLoad() {
             super.viewDidLoad()
             let url = "http://iabat.org/data.php"
             guard let urlObj = URL(string: url) else {return}     
              URLSession.shared.dataTask(with: urlObj) {(data, 
    response, error) in

        do {
            var Events = try JSONDecoder().decode([Event].self, from: 
       data!)

            for Event in Events {
                print("Hi")
                print(Event)
                print(Event.name)
            }
        }
        catch {
            print("error")
            }
        }
    }
}

Но по какой-то причине это не работает.И он также не будет ничего печатать, даже если это строка в for Event in Events do / catch.

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Вам необходимо начать dataTask с вызова resume(), также всегда делайте print(error), чтобы отслеживать ошибки, если таковые имеются


 class EventsViewController: UIViewController {
         override func viewDidLoad() {
             super.viewDidLoad()
             let url = "http://iabat.org/data.php"
             guard let urlObj = URL(string: url) else {return}     
              URLSession.shared.dataTask(with: urlObj) {(data, 
    response, error) in

        do {
            var Events = try JSONDecoder().decode([Event].self, from: 
       data!)

            for event in Events {
                print("Hi")
                print(event)
                print(event.name)
            }
        }
        catch {
            print(error)
            }
        }.resume() // here
    }
}
0 голосов
/ 08 июля 2019

Вы забыли добавить .resume() для отправки запроса в конце URLSession.shared.dataTask.

...