未从 JSON Swift 获取数据
Data not being fetched from JSON Swift
我试了很多东西,好像都不行。我有这个 JSON
[{"id":"1","name":"Dua Kumayl","location":"IABAT","date":"2019-06-13","Islamic":"Shawwal 8,1440","time":"19:30:00.000000","imageURL":""]
从这个 link: 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.
中的字符串,它也不会打印任何内容
您需要通过调用 resume()
来启动 dataTask
,如果有任何错误,也总是执行 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
}
}
您忘记在 URLSession.shared.dataTask
末尾添加 .resume()
以发送请求。
我试了很多东西,好像都不行。我有这个 JSON
[{"id":"1","name":"Dua Kumayl","location":"IABAT","date":"2019-06-13","Islamic":"Shawwal 8,1440","time":"19:30:00.000000","imageURL":""]
从这个 link: 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.
您需要通过调用 resume()
来启动 dataTask
,如果有任何错误,也总是执行 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
}
}
您忘记在 URLSession.shared.dataTask
末尾添加 .resume()
以发送请求。