【问题标题】:Nested JSON SwiftUI嵌套 JSON SwiftUI
【发布时间】:2021-04-28 18:15:39
【问题描述】:

我查看了本教程 https://www.hackingwithswift.com/forums/swiftui/nested-json/4018 以修复嵌套 json 问题。

我的 JSON 源已更改为

[{"title":"title","link":"...","description":"...".... 

{"items":[{..

我原来的结构是这样的

struct Novitads: Codable, Identifiable {
    public var id = UUID()
    public var title: String
    public var pubDate: String
    public var description: String
    public var link: String
    public var image: URL
//    public var pubDate: String
}

现在我添加了:

struct News: Codable {
    var items: [Novitads]
}

这与文章中的解决方案一致。

不幸的是,我的 fetch 类现在失败了:

class FetchNovitads: ObservableObject {

@Published var Novitadss = [Novitads]()
@Published var selectedCode: String?
public lazy var selectC: Double = 0.1

let x: Double = 21.25
func refresh() {
    let url = URL(string: "https://testapi-")!
    print (url)
    print (selectedCode)
    print (selectC)
    
    selectC = Double(selectedCode ?? "0") ?? 0.1
    
    URLSession.shared.dataTask(with: url) { data, _, _ in
        do {
            if let NovitadsData = data {
           
                let decodedData = try JSONDecoder().decode(News.self, from: NovitadsData)
                DispatchQueue.main.async {
                    
                    self.Novitadss = decodedData
                }
            } else {
                print("No data")
            }
        } catch {
            print(error)
        }
    }.resume()
}

}

更准确地说是self.Novitadss = decodedData 无法将类型“News”的值分配给类型“[Novitads]”当我使用以前的 json 结构(非嵌套)时没有发生这种情况,因此不需要 News 结构。

我确定我缺少一些微不足道的东西:)

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    如果您解码News,则必须将items 数组分配给Novitadss

    self.Novitadss = decodedData.items
    

    请以小写字母开头的属性命名

    【讨论】:

      【解决方案2】:

      使用

      self.Novitadss = decodedData.items 
      

      现在通过迭代,您可以获取其中关于索引值的属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-11
        • 1970-01-01
        • 1970-01-01
        • 2021-05-22
        • 2020-07-26
        • 2021-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多