【问题标题】:Respecting ObservableObject, but the view is complaining尊重 ObservableObject,但视图在抱怨
【发布时间】:2020-08-15 15:44:21
【问题描述】:

我有一个 ObservableObject,描述如下:

class DeviceManager: ObservableObject {
    @Published var devices: [Device] = []
    var blM: BlInfo!
    
    init() {
        blM = BlInfo()
        blM.stateDelegate = self
        blM.devicesDelegate = self
    }
}

extension DeviceManager: BlDevicesDelegate {
    func didDiscoverDevice(peripheral: CBPeripheral) {
        print("Discovered \(String(describing: peripheral.name)) with ID \(peripheral.identifier)")
        if devices.filter({ $0.name == peripheral.name }).count == 0 {
            print("Added \(String(describing: peripheral.name)) with ID \(peripheral.identifier)")
            devices.append(Device(id: peripheral.identifier, name: peripheral.name ?? "Unknown name", peripheral: peripheral))
        }
    }
    
    func didConnect(peripheral: CBPeripheral) {
        
    }
}

extension DeviceManager: BlStateDelegate {
    func didChangeState(state: CBManagerState) {
        switch(state) {
        case CBManagerState.poweredOn:
            print("BLE is ready")
            blM.discover()
        default:
            print("BLE is not ready")
        }
    }
}

我想在视图中显示设备列表。我已经创建了视图,但是编译器抱怨我的对象:

struct ContentView: View {
    @ObservedObject private var deviceManager: DeviceManager! = DeviceManager()
    var body: some View {
        NavigationView {
            List(deviceManager.devices) { device in
                Text(device.name)
            }.navigationBarTitle("Devices")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

错误是

通用结构“ObservedObject”需要“DeviceManager?”符合'ObservableObject'

您知道为什么它不起作用吗?谢谢!

【问题讨论】:

    标签: swift observable


    【解决方案1】:

    你不需要可选的,即使用

    struct ContentView: View {
        @ObservedObject private var deviceManager = DeviceManager()
    

    【讨论】:

    • 谢谢!只是假设... Optional 是不可观察的,对吧?
    猜你喜欢
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2017-01-17
    • 2020-02-22
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多