SwiftUI iterating through dictionary with ForEach

后端 未结 7 1872

Is there a way to iterate through a Dictionary in a ForEach loop? Xcode says

Generic struct \'ForEach\' requires that \'[Str

7条回答
  •  生来不讨喜
    2020-12-03 13:56

    Xcode: 11.4.1~

        ...
        var testDict: [String: Double] = ["USD:": 10.0, "EUR:": 10.0, "ILS:": 10.0]
        ...
        ForEach(testDict.keys.sorted(), id: \.self) { key in
            HStack {
                Text(key)
                Text("\(testDict[key] ?? 1.0)")
            }
        }
        ...
    

    more detail:

    final class ViewModel: ObservableObject {
        @Published
        var abstractCurrencyCount: Double = 10
        @Published
        var abstractCurrencytIndex: [String: Double] = ["USD:": 10.0, "EUR:": 15.0, "ILS:": 5.0]
    }
    
    struct SomeView: View {
        @ObservedObject var vm = ViewModel()
        var body: some View {
            NavigationView {
                List {
                    ForEach(vm.abstractCurrencytIndex.keys.sorted(), id: \.self) { key in
                        HStack {
                            Text(String(format: "%.2f", self.vm.abstractCurrencyCount))
                            Text("Abstract currency in \(key)")
                            Spacer()
                            Text(NumberFormatter.localizedString(from: NSNumber(value: self.vm.abstractCurrencytIndex[key] ?? 0.0), number: .currency))
                        }
                    }
                }
            }
        }
    }
    

提交回复
热议问题