通用结构“ObservedObject”要求符合“ObservableObject”

jon*_*ham 10 swiftui

我无法理解为什么下面的代码无法编译。我收到一条错误消息,指出我必须遵守 ObservableObject,但我不明白为什么不这样做。

我已经简化以表明我正在看到。我有两节课。第二个观察第一个,然后视图观察第二个。

头等舱

import Foundation
import SwiftUI
import CoreBluetooth

class BLEPeripheralDevice: NSObject, ObservableObject {
    @Published var bodySesnorLocation: String = ""
}
Run Code Online (Sandbox Code Playgroud)

二等舱

import Foundation
import SwiftUI
import CoreBluetooth

class BLEManager: NSObject, ObservableObject {
    @ObservedObject var blePeripheralDevice: BLEPeripheralDevice!
    
    @Published var blePeripheralName: String = ""
}
Run Code Online (Sandbox Code Playgroud)

看法

import SwiftUI

struct BluetoothDeviceView: View {
    @ObservedObject var bleManager = BLEManager()

var body: some View {
        VStack (spacing: 10) {
            Text("Bluetooth Devices")
}
}
Run Code Online (Sandbox Code Playgroud)

当我编译此代码时,我在以下行的第二类中收到错误。

@ObservedObject var blePeripheralDevice: BLEPeripheralDevice!
Run Code Online (Sandbox Code Playgroud)

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

我不明白为什么会这样。任何帮助表示赞赏。

dav*_*dev 7

ObservedObject 是主要针对 View 的属性包装器。使用已发布的代替..

@Published var blePeripheralDevice: BLEPeripheralDevice!
Run Code Online (Sandbox Code Playgroud)