如何解决如何从url读取json,输出到应用程序屏幕? SwiftUI
我是新手,需要从url中读取json文件。我设法获取了数据并将其输出到控制台,但是如何将其显示到应用程序屏幕呢?
quote=
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()
}
}
解决方法
只需创建一个@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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。