从 URL 下载嵌套 JSON 并制作 Observable Object SwiftUI,错误:“在调用中缺少参数 'from' 的参数”
Posted
技术标签:
【中文标题】从 URL 下载嵌套 JSON 并制作 Observable Object SwiftUI,错误:“在调用中缺少参数 \'from\' 的参数”【英文标题】:Download nested JSON from URL and make Observable Object SwiftUI, ERROR: "Missing Argument for parameter 'from' in call"从 URL 下载嵌套 JSON 并制作 Observable Object SwiftUI,错误:“在调用中缺少参数 'from' 的参数” 【发布时间】:2021-01-17 14:35:03 【问题描述】:我正在尝试从 URL 下载嵌套的 JSON 文件。我想让它成为可观察对象,以便我的应用程序在下载完成后更新其视图。 在这里,我有我的结构和我创建的类,以使其成为可观察对象。这也是我的错误出现的地方:“调用中的参数'from'中缺少参数”:(感谢您的帮助!)
struct SpotDetail: Codable
var spot: String
var day0: DayDetail
var day1: DayDetail
var day2: DayDetail
enum CodingKeys: String, CodingKey
case spot = "spot"
case day0 = "day0"
case day1 = "day1"
case day2 = "day2"
struct DayDetail: Codable
var date: String
var wind: [Int]
var gust: [Int]
enum CodingKeys: String, CodingKey
case date = "date"
case wind = "wind"
case gust = "gust"
class networkSpotData: ObservableObject
let objectWillChange = ObjectWillChangePublisher()
var WindSpot = SpotDetail() // ERROR: "Missing Argument for parameter 'from' in call"
willSet
self.objectWillChange.send()
以及从网址下载的功能:
extension ContentView
func loadspotdata(url: String)
guard let url = URL(string: "https://raw.githubusercontent.com/Bene2907/Bene2907.github.io/main/template.json") else
return
let request = URLRequest(url: url)
URLSession.shared.dataTask(with: request) data, response, error in
if let data = data
if let response_obj = try? JSONDecoder().decode(SpotDetail.self, from: data)
DispatchQueue.main.async
spotData.WindSpot = response_obj
.resume()
终于有我的观点来呈现数据了:
struct ContentView: View
@ObservedObject var spotData = networkSpotData()
var body: some View
VStack
Text("\(spotData.WindSpot.spot)")
.padding()
Text("\(spotData.WindSpot.day0.date)")
.padding()
.onAppear(perform:
loadspotdata()
)
【问题讨论】:
【参考方案1】:在中使用默认构造函数
var WindSpot = SpotDetail() // ERROR: "Missing Argument for parameter 'from' in call"
你必须用SpotDetail
中的默认值初始化属性,比如
struct SpotDetail: Codable
var spot: String = ""
var day0: DayDetail = DayDetail() // this also should be initialised properties
...
【讨论】:
以上是关于从 URL 下载嵌套 JSON 并制作 Observable Object SwiftUI,错误:“在调用中缺少参数 'from' 的参数”的主要内容,如果未能解决你的问题,请参考以下文章