首页 > 解决方案 > WKExtension.shared().delegate = self 现在显示无法分配给属性:'delegate' 是仅获取属性

问题描述

用于后台任务的 WatchOS 代码需要WKExtention.shared().delegate将 设置为self,但现在显示错误消息:

无法分配给属性:“委托”是一个只能获取的属性

如果我删除该行,则在触发后台任务时我不会获得更新,因为我以前能够接收到。

我查看了 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

标记为红色并显示错误为:

无法分配给属性:“委托”是一个只能获取的属性

标签: swiftwatchkitxcode11

解决方案


关于如何使用现代 SwiftUI 应用程序执行此操作的文档并不多,Info.plist 方法似乎不再适用。也许这会帮助其他人更快地解决这个问题:使用WKExtensionDelegateAdaptor,类似于UIApplicationDelegateAdaptor.

@main
struct WatchApp: App  {

@WKExtensionDelegateAdaptor(ExtensionDelegate.self) var extensionDelegate

@SceneBuilder var body: some Scene {
       
...

}

推荐阅读