【问题标题】:Displaying Foreign Exchange Dictionary Key / Value Pairs显示外汇字典键/值对
【发布时间】:2020-11-29 02:44:03
【问题描述】:

这是对Decoding Exchange Rate JSON in SwiftUI 提出的问题的后续处理。我需要一些帮助来显示费率条目。我知道这是一个字典键/值,但我不确定如何将每个字符串/双对拉出结构。

这是从 API 接收到的典型字符串格式:

{ 
  "rates": { "CAD": 1.5497, "HKD": 9.2404, "ISK":159.0 },
  "base": "EUR", 
  "date": "2020-11-27" 
}
struct RateResult: Codable {
    let rates: [String: Double]
    let base, date: String
}
struct ContentView: View {
    @State private var results = RateResult(rates: [:], base: "", date: "")
    
    var curr = "EUR"
    
    var body: some View {
        Text("Base Currency = \(results.base)")
        Text("Date = \(results.date)")
    
        List(results, id: \.results.rates) { item in
                   VStack(alignment: .leading) {
                    Text(results.rates[item.key])
                    Text(results.rates[item.value])
            }
        }
        .onAppear(perform: loadData)
    }
    func loadData() {
    }
}

【问题讨论】:

  • 你需要先解释你的数据。你怎么知道你将拥有这样的数据,使得你在费率中恰好有三个键?
  • 如果不知道字典有多少键,用Dictionary<Key, Value>.Keys获取键的数组
  • 数据格式:总是有1个日期和1个基键/值对; rate 类别可以非常配合请求多达约 200 个键/值对。费率可以按任何顺序排列。

标签: swiftui ios14


【解决方案1】:

要从字典中获取键/值对数组,可以使用.map

let dict = ["one": 1, "two": 2, "three": 3]
let pairs = dict.map { ($0, $1) } // ex: [("one": 1"), ("three": 3), ("two": 2)]

所以,您可以在 List 中使用相同的内容:

List(results.rates.map { ($0, $1) }, id: \.0) { currency, rate in
   VStack {
      Text(currency)
      Text("\(rate)")
   }
}

【讨论】:

    猜你喜欢
    • 2021-05-11
    • 2018-10-07
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 2014-07-23
    相关资源
    最近更新 更多