美文网首页SwiftUI
SwiftUI 数组套字典如何遍历展示[2025-12-01]

SwiftUI 数组套字典如何遍历展示[2025-12-01]

作者: 努力奔跑的小男孩 | 来源:发表于2025-11-30 14:16 被阅读0次

在开发中经常遇到,一个数组包含以字典为子元素的情况。我在SwiftUI中,如何对数组数据进行访问并展示在界面上,遇到了不能访问的问题, 下面是对该问题的解决以及记录。方便日后快速解决类似问题。

import SwiftUI
import CoreBluetooth

// 模拟 CBCharacteristic(仅用于示例)
class MockCharacteristic: CBCharacteristic {
    init(uuid: CBUUID) {
        super.init()
    }
}

struct CharView: View {
    // 模拟测试数据
    let charData: [[String: [CBCharacteristic]]] = [
        ["FFE0": [MockCharacteristic(uuid: CBUUID(string: "FFE1"))]],
        ["FFF0": [MockCharacteristic(uuid: CBUUID(string: "FFF1")), MockCharacteristic(uuid: CBUUID(string: "FFF2"))]],
        [:] // 空字典
    ]
    
    var body: some View {
        VStack(spacing: 15) {
            Text("蓝牙特征数据列表")
                .font(.title)
            
            charDataContentView
        }
        .padding()
    }
    
    @ViewBuilder 
    private var charDataContentView: some View { // 重点、亮点
        if charData.isEmpty {
            Text("暂无数据")
                .foregroundColor(.gray)
        } else {
            ForEach(charData.indices, id: \.self) { index in // 重点、亮点
                let dict = charData[index]
                VStack(alignment: .leading, spacing: 5) {
                    Text("第 \(index+1) 组")
                        .font(.subheadline)
                        .bold()
                    
                    if dict.isEmpty {
                        Text("→ 空服务")
                            .foregroundColor(.gray)
                    } else {
                        ForEach(Array(dict), id: \.key) { key, chars in
                            Text("→ 服务 \(key):\(chars.count) 个特征") // 重点、亮点
                        }
                    }
                }
                .padding(.vertical, 5)
                .padding(.horizontal, 10)
                .background(Color(.systemGray6))
                .cornerRadius(8)
            }
        }
    }
}

// 预览
struct CharView_Previews: PreviewProvider {
    static var previews: some View {
        CharView()
    }
}

总结

ViewBuilder 核心规则.png

相关文章

  • 有序遍历字典

    因为字典是无序的,数组是有序的,当遍历字典获取数据模型的时候,模型数组的顺序就不会有序。如何有序遍历字典呢?1.获...

  • Swift 之集合

    数组定义遍历 增/删/改 合并 字典 定义 遍历 增/删/改 合并 一 数组 定义 遍历 增删改 合并 二 字典 ...

  • 遍历数组和字典

    快速遍历方法 遍历数组 For-in 遍历字典 enumerateKeysAndObjectsUsingBlo...

  • 数组和字典的关系 -好基友

    JSON数据格式: 数组和字典的关系 -好基友,套来套去 字典套 数组套 字典 { "succes...

  • python开发--字典dict

    如何定义字典,如何使用存储在字典中的信息;如何访问和修改字典中的元素,以及如何遍历字典中的所有信息;如何遍历字典中...

  • 循环遍历数组字典

    1遍历数组 enumerateObjectsUsingBlock 2遍历字典(enumerateKeysAndOb...

  • iOS 字典遍历enumeratekeysandobjectsu

    最近用到字典遍历,数组遍历的有关东西用到enumeratekeysandobjectsusingblock 块枚举...

  • Python语法笔记

    遍历数组: 遍历5次: while循环: list: 字符串: 输出: 字典:

  • RAC集合

    在RAC中可以使用RACSequence,来进行对数组以及字典的快速便利 1、RAC对字典进行遍历 对字典遍历出来...

  • Swift字典

    字典的初始化 字典的成员变量 遍历 数组的增删改查

网友评论

    本文标题:SwiftUI 数组套字典如何遍历展示[2025-12-01]

    本文链接:https://www.haomeiwen.com/subject/ugxvqstx.html