过去用于后台任务的WatchOS代码要求将WKExtention.shared().delegate
设置为self
,但是现在显示错误消息:
无法分配给属性:“ delegate”是仅获取属性
如果我删除该行,则触发后台任务时不会得到更新,因为我以前可以接收。
我查看了StackOverflow以及Google和Apple文档,但找不到答案。为什么该行过去可以正常工作时现在显示错误。
制作一个新的WatchKit应用并在InterfaceControllerVC.swift
上
将WKExtensionDelegate
添加到该类中,然后:
override func awake(withContext context: Any?) {
super.awake(withContext: context)
WKExtension.shared().delegate = self
}
该行:
WKExtension.shared().delegate = self
标记为红色,并显示以下错误:
无法分配给属性:“ delegate”是仅获取属性
答案 0 :(得分:2)
关于如何使用现代SwiftUI应用程序执行此操作的文档不多,Info.plist方法似乎不再起作用。也许这会帮助其他人更快地解决此问题:使用WKExtensionDelegateAdaptor
,类似于UIApplicationDelegateAdaptor
。
@main
struct WatchApp: App {
@WKExtensionDelegateAdaptor(ExtensionDelegate.self) var extensionDelegate
@SceneBuilder var body: some Scene {
...
}
答案 1 :(得分:1)
如此处所述,代表由系统自动分配。
通过执行以下操作来设置委托对象:
WKExtensionDelegate
。WKExtensionDelegateClassName
中Info.plist
的值为$(PRODUCT_MODULE_NAME).Your_Class_ExtensionDelegate
(模块名称对于Swift项目是必需的。)