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

在SwiftUI中如何展示嵌套数组(数组的数组)结构的内容?

问题原因

  • 外层ForEach遍历的是购物清单数组的索引,你拿到的参数list是0、1这类索引值,不是对应的单日物品子数组
  • 内层List写的0..<list是从0遍历到当前索引值,完全没有取到对应子数组的内容,也没有展示实际的物品字符串

修正后代码

import SwiftUI

struct ShoppingListView: View {
    
    var shoppingList: [[String]]

    var body: some View {
        VStack(alignment: .leading) {
            // 外层遍历所有单日购物清单
            ForEach(0..<shoppingList.count, id: \.self) { index in
                Text("第\(index+1)天购物清单(共\(shoppingList[index].count)件物品)")
                VStack {
                    // 内层遍历当前单日清单的所有物品
                    List(shoppingList[index], id: \.self) { item in
                        Text("物品:\(item)")
                    }
                    .frame(height: CGFloat(shoppingList[index].count) * 44) // 适配List高度,避免默认撑满父容器
                }
            }
        }
        .padding()
    }
}

struct ShoppingListView_Previews: PreviewProvider {
    static var previews: some View {
        let list = [["eggs", "bread", "milk", "cheese" ],["steak", "potatoes", "salad kit"]]
        ShoppingListView(shoppingList: list)
    }
}

补充说明

  • 如果后续需要支持删除、新增物品的操作,建议给每个物品、每个单日清单加唯一标识ID,不要用\.self当id,避免元素重复时出现渲染异常
  • 如果不需要按天分区展示,想直接展示合并后的所有物品,可以先把嵌套数组拍平:shoppingList.flatMap { $0 }再遍历即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:15:03