首页 > 解决方案 > 我怎样才能初始化结构:没有默认值的可编码

问题描述

我想从 API 获取 Json,并使用Codable协议,但是当我初始化发布的 var 时,我得到一个错误。

struct Search: Codable {
    let result: [String]
}

class SearchViewModel: ObservableObject {
    @Published var data = Search()

    
    func loadData(search: String) {
        var urlComps = URLComponents(string: getUrl)
        let queryItems = [URLQueryItem(name: "result", value: search)]
        urlComps!.queryItems = queryItems
        
        let url = urlComps!.url!.absoluteString
        guard let Url = URL(string: url) else { return }
        
        URLSession.shared.dataTask(with: Url) { (data, res, err) in
            do {
                if let data = data {
                    let decoder = JSONDecoder()
                    let result = try decoder.decode(Search.self, from: data)
                    
                    DispatchQueue.main.async {
                        self.data = result
                    }
                    
                } else {
                    print("there's no Data")
                }
            } catch (let error) {
                print("Error!")
                print(error.localizedDescription)
            }
        }.resume()
    }
}

标签: swiftcodable

解决方案


改变

@Published var data:Search?

推荐阅读