swift - WKExtension.shared().delegate = self 现在显示无法分配给属性 : 'delegate' is a get-only property

标签 swift watchkit xcode11

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

Cannot assign to property: 'delegate' is a get-only property



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

我上下查看了 StackOverflow 以及 Google 和 Apple 文档,但找不到答案。为什么该行在过去工作正常时现在显示错误。

制作一个新的 WatchKit 应用程序并在 InterfaceControllerVC.swift
添加 WKExtensionDelegate到类(class)和:

    override func awake(withContext context: Any?) {
      super.awake(withContext: context)

      WKExtension.shared().delegate = self
   }

线路:

    WKExtension.shared().delegate = self

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

Cannot assign to property: 'delegate' is a get-only property

最佳答案

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

@main
struct WatchApp: App  {

@WKExtensionDelegateAdaptor(ExtensionDelegate.self) var extensionDelegate

@SceneBuilder var body: some Scene {
       
...

}

关于swift - WKExtension.shared().delegate = self 现在显示无法分配给属性 : 'delegate' is a get-only property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56530257/

相关文章:

ios - 如何按值降序从 firebase 获取数据?

ios - UIViewController 与继承

ios - handleWatchKitExtensionRequest 在 iPhone 上播放背景音频

ios - WatchKit:如何将GLANCE INTERFACE带到 watch 显示屏上?

ios - 我如何保证主机应用程序和扩展程序使用的共享应用程序容器中核心数据存储中的唯一条目?

swift - 核心数据最大实体数量

Xcode11 编辑器(通过 "Add Editor to Right")被禁用

ios - Xcode 11 UILaunchImages 已被弃用,请改用启动 Storyboard 警告

xcode - Xcode 11 beta 4错误:命令CompileSwiftSources失败,退出代码为非零

swift - 如何在 macOS 中使用 AVFoundation 采集视频数据?