使用 MVVM 模式显示数组中的值的 SwiftUI 问题

SwiftUI problem with displaying values from array using MVVM pattern

我是 swift 和 iOS 开发的新手,我无法在 iPhone 屏幕上显示从 json 文件中获得的值。

型号代码:

import Foundation

struct JSONModel: Codable{
    var name: String
    var value: String
}

视图模型代码:

import Foundation

class JSONViewModel: ObservableObject{
    @Published var resultArray: [JSONModel] = []
    
    init(){
        parseJSON()
    }
    
    func parseJSON(){
        var result: [JSONModel] = [] //empty array
        guard let url = Bundle.main.url(forResource:"animals", withExtension: "json") else { return }
        
        do{
            let jsonData = try Data(contentsOf: url)
            result = try JSONDecoder().decode([JSONModel].self, from: jsonData)
            
            DispatchQueue.main.async {
                self.resultArray = result
            }
        }
        catch{
            print("Error: \(error)")
        }
    }  
}

ContentView 代码:

import SwiftUI

struct ContentView: View {
    @StateObject var viewModel = JSONViewModel()
            
    var body: some View {
        NavigationView {
            ScrollView {
                ForEach(viewModel.resultArray){ item in
                    Text(item.name)
                }
            }
        }
    }
}

我没有收到任何具体错误,唯一 Xcode 显示给我的是:

Failed to produce diagnostic for expression; please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project

任何帮助将不胜感激

使您的模型符合 Hashable 并使用 .self 来识别它:

struct JSONModel: Codable, Hashable{
    var name: String
    var value: String
}



ForEach(viewModel.resultArray, id:\.self){ item in
                    Text(item.name)
                }