在使用 ForEach 迭代 CBPeripherals 数组时,我得到了一个 CBPeer

While iterating an array of CBPeripherals with ForEach I get a CBPeer

我刚开始学习 Swift 和 SwiftUI,我遇到了一个问题,我很难解决。

我正在尝试创建一个可用的蓝牙外围设备列表,其中包含要连接到 select 的按钮,但出于某种原因,ForEach 语句正在迭代 CBPeer 对象而不是 CBPeripheral 对象。

是我做错了什么,还是无法遍历 CBPeripheral 对象数组?

我的代码:

struct BluetoothPeripheralSelection: View{
    var peripherals: [CBPeripheral]
    
    var body: some View{
        VStack{
            Section(header: Text("Select bluetooth peripheral")){
                ForEach(peripherals, id: \.self){peripheral in
                    Button(action: {}){
                        Text(peripheral.name)
                    }
                }
            }
        }
    }
}

编译器好像报错了。原因是 peripheral.name 是可选的,所以使用类似的东西(用 Xcode 12 测试)

Button(action: {}){
    Text(peripheral.name ?? peripheral.identifier.uuidString)
}