При итерации массива CBPeripherals с помощью ForEach я получаю CBPeer - PullRequest
1 голос
/ 01 августа 2020

Я только начал изучать Swift и SwiftUI, и я столкнулся с проблемой, которую не могу решить.

Я пытаюсь создать список доступных периферийных устройств Bluetooth с кнопками для выбора подключиться, но по какой-то причине оператор 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)
                    }
                }
            }
        }
    }
}

Код

1 Ответ

1 голос
/ 01 августа 2020

Похоже, что компилятор сообщает неправильную ошибку. Причина в том, что peripheral.name не является обязательным, поэтому используйте вместо него что-то вроде (проверено с Xcode 12)

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