【问题标题】:How can I read json from url, output to app screen? SwiftUI如何从 url 读取 json,输出到应用程序屏幕? SwiftUI
【发布时间】:2020-08-19 03:43:41
【问题描述】:

我是 swift 新手,需要从 url 读取 json 文件。我设法获取数据并将其输出到控制台,但如何将其获取到应用程序屏幕?

import SwiftUI

struct User: Codable {
    let Login: String
    let Password: String
}

struct AllTEC: View {
    var body: some View {
        Text("asd").onAppear(perform: loadD)
    }
}

extension AllTEC
{
    func loadD() {

    let url = URL(string: "https://symbiosys-a415a.firebaseio.com/USER.json")!

    let task = URLSession.shared.dataTask(with: url) { data, response, error in
        guard error == nil else {
              print("error: \(error!)")
              return
        }
        guard let data = data else{
              print("no data")
              return
        }
        guard let user = try? JSONDecoder().decode(User.self, from: data) else {
        print("Error: Couldn't decode data ito user")
        return
        }
        print("gotten user is \(user.Login)")
    }
    task.resume()
   }
}

struct AllTEC_Previews: PreviewProvider {
    static var previews: some View {
          AllTEC()
    }
}

json 结构非常简单。

{
"Login":"Kapitan",
"Password":"M3030"
}

【问题讨论】:

    标签: json swift swiftui


    【解决方案1】:

    只需创建一个@State 变量user 用于将返回的User 存储在AllTEC 中。

    struct AllTEC: View {
        @State var user: User?
        var body: some View {
            Text("Login: \(user?.Login ?? "")")
                .onAppear(perform: loadD)
        }
    }
    

    并在网络调用中解码后立即设置user

    print("gotten user is \(user.Login)")
    DispatchQueue.main.async {
        self.user = user
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2017-11-10
      • 2014-09-09
      相关资源
      最近更新 更多