问题描述
我正在尝试更新我的应用程序以利用SwiftUI架构。这是一个独立的WatchKit应用。我曾经使用委托方法在视图之间传递一些关键类。由于我正在尝试使用environmentObject,因此我想通过委托初始化初始类(彼此依赖)。
鉴于我正在使用SwiftUI方法,我已经在@main中重新创建了AppDelegate。
import SwiftUI
class AppDelegate: NSObject,WKExtensionDelegate {
var class1: Class1?
var class2: Class2! = Class2()
var class3: Class3!
func application(_ application: WKExtension) -> Bool {
return true
}
}
@main
struct WatchApp: App {
@WKExtensionDelegateAdaptor(AppDelegate.self) var delegate
init() {
delegate.class1 = Class1()
delegate.class2 = Class2()
delegate.class3 = Class3()
}
@SceneBuilder var body: some Scene {
WindowGroup {
NavigationView {
ContentView()
.environmentObject(delegate.class3)
.environmentObject(delegate.class2)
.environmentObject(delegate.class1)
}
}
WKNotificationScene(controller: NotificationController.self,category: "myCategory")
}
}
在调用Class 3时,在访问AppDelegate时我得到一个nil值,并且崩溃。
#if os(macOS)
let delegate = NSApplication.shared.delegate as! AppDelegate
#elseif !os(watchOS)
let delegate = UIApplication.shared.delegate as! AppDelegate
#else
let delegate = WKExtension.shared().delegate as! AppDelegate //<HERE's The Crash - Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP,subcode=0x0)
#endif
}
在info.plist
中<key>WKExtensionDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).AppDelegate</string>
我有明显的事情要忽略吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)