SwiftUI 致命错误:未找到“”类型的 ObservableObject
Posted
技术标签:
【中文标题】SwiftUI 致命错误:未找到“”类型的 ObservableObject【英文标题】:SwiftUI Fatal error: No ObservableObject of type “ ” found 【发布时间】:2020-11-19 02:28:15 【问题描述】:我遇到以下致命错误:
SwiftUI 致命错误:未找到类型为“ ”的 ObservableObject 并且发生@EnvironmentObject 错误:可能缺少此视图的祖先”。
Xcode 版本:
Xcode:12.1 和核心蓝牙
我的代码如下:
ble.swift
import CoreBluetooth
・・・
class BLEConnection:NSObject, CBPeripheralDelegate,CBCentralManagerDelegate,ObservableObject
@EnvironmentObject var GS: GlobalStatus
・・・・
func startCentralManager()
//Process of start BLE Scan
public func centralManager(・・・) ← Scanned Peripheral
let localName:String
if(localName == GS.beaconid) ← ★★★Fatal Error Occured this point.★★★
・・・・
・・・・
GlobalStatus.swift
class GlobalStatus: ObservableObject
@Published var beaconid = "ID001"
项目名称.swift
@main
struct ProjectName: App
let persistenceController = PersistenceController.shared
var body: some Scene
WindowGroup
ContentView()
.environment(\.managedObjectContext,persistenceController.container.viewContext)
.environmentObject(GlobalStatus())
ContentView.swift
・・・
struct ContentView: View
@ObservedObject var bke = BLEConnection()
var body: some VIew
NavigationView
Text("Test")
.onAppear(perform: ble.startCentralManager)
我该如何解决这个问题? 提前致谢。
【问题讨论】:
【参考方案1】:@EnvironmentObject
用于 SwiftUI 视图。在课堂上只需使用常规属性:
class BLEConnection:NSObject, CBPeripheralDelegate,CBCentralManagerDelegate,ObservableObject
var GS: GlobalStatus!
// ...
在您看来,只需将一个注入另一个(作为一种方法)
struct ContentView: View
@EnvironmentObject var GS: GlobalStatus
@ObservedObject var bke = BLEConnection()
var body: some VIew
NavigationView
Text("Test")
.onAppear
ble.GS = self.GS
ble.startCentralManager()
【讨论】:
根据答案修复sorce解决了问题。非常感谢。以上是关于SwiftUI 致命错误:未找到“”类型的 ObservableObject的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI-> 线程 1:致命错误:未找到 MyObject.Type 类型的可观察对象(工作表中的 EnvironmentObject)
SwiftUI 错误未找到 GlobalEnvironment 类型的 ObservableObject