You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中如何对含字符串与Double的列表按Double值排序

解决SwiftUI中[String: Double]字典按Double值排序的问题

你的代码里,sorteByValue.sorted(by: >)默认会比较字典键值对的键(String类型)——因为Swift中字典的元素是(key: String, value: Double)元组,直接使用>运算符会按元组的第一个元素(即key)进行字符串排序,这就是为什么当前排序依据是字符串而非Double值。

要实现按Double值排序,只需要修改sorted的闭包,明确指定比较两个元素的value属性即可:

修改后的完整代码

import SwiftUI

struct ContentView: View {
    
    @State private var sorteByValue: [String : Double] = ["key1": 3.5, "key2": 1.2, "key3": 5.0]

    var body: some View {
        
        List {
              // 明确指定按value排序
              ForEach(sorteByValue.sorted { $0.value > $1.value }, id: \.key) { key, value in
                  HStack{
                    Text("\(value, specifier: "%.2f")")
                    Text(key)
                  }
              }
          }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

关键说明

  • sorted { $0.value > $1.value }:指定按字典值的降序排序,如果需要升序,把>换成<即可。
  • 建议把原代码中的id: \.value改成id: \.key——因为字典的key是唯一的,而value可能存在重复,用key作为标识更安全,避免SwiftUI列表出现标识冲突的问题。

内容的提问来源于stack exchange,提问作者Mane Manero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:45:41