如何在SwiftUI中显示来自API的JSON数据?

时间:2019-09-24 15:04:30

标签: json swift api swiftui

我有一个来自API的JSON。我需要将其中的值显示为文本。

这是它的一部分。

]
    {
        "d": "2019-09-20",
        "v": 56.62
    },
    {
        "d": "2019-09-23",
        "v": 56.93
    }
]

现在,我为此创建了一个名为Dolar.swift的模型。

struct Dolar: Decodable {
    var d: String?
    var v: Double?
}

还有一个名为WebService.swift的类将处理该调用:

class WebService {
    func getCurrency(completion: @escaping (Dolar?) -> ()) {
        guard let url = URL(string: "https://api.estadisticasbcra.com/usd_of") else { return }

        URLSession.shared.dataTask(with: url) { (data, response, error) in
            guard let data = data, error == nil else {
                return
            }

            let currencyResponse = try? JSONDecoder().decode(Dolar.self, from: data)

            if let currencyResponse = currencyResponse {
                let dolar = currencyResponse
                print(dolar)
                completion(dolar)
            } else {
                completion(nil)
            }
        }.resume()
    }
}

API的文档说,它要求在请求中添加一个令牌:

Authorization: BEARER {TOKEN}

我该怎么做?我有令牌,但是不知道如何实现它。这是我的第一个问题。 其次,一旦获得值,如何在ContentView.swift上显示它? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

对于问题的第一部分,您需要使用URLSession.dataTask的{​​{1}}变体。像这样:

URLRequest

请参阅URLSessionURLRequest的文档