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

SwiftUI如何将模型中[String:String]字典排序后渲染为List列表

问题修复方案
  • 代码无法正常运行的核心原因是 ForEach 遍历索引范围时没有指定id参数,SwiftUI要求非Identifiable类型的遍历序列必须显式指定唯一标识的路径。

原有写法修复

仅补充缺失的id参数即可正常运行:

var fw: Deck

var body: some View {
    let sortedDict = fw.dictItems.sorted(by: <)
    let keys = sortedDict.map { $0.key }
    let values = sortedDict.map { $0.value }
    return List {
        // 补充id参数,用索引本身作为唯一标识
        ForEach(keys.indices, id: \.self) { index in
            HStack {
                Text(keys[index])
                Text("\(values[index])")
            }
        }
    }
}

更简洁的优化写法

无需拆分出单独的key、value数组,直接遍历排序后的键值对即可,代码可读性更高:

var fw: Deck

var body: some View {
    // 可根据需要调整排序规则,比如按value排序可改为sorted { $0.value < $1.value }
    let sortedItems = fw.dictItems.sorted(by: <)
    return List {
        // 用字典天然唯一的key作为遍历元素的id
        ForEach(sortedItems, id: \.key) { item in
            HStack {
                Text(item.key)
                Text(item.value)
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:45:03