swift - 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
标记为红色并显示错误为:
无法分配给属性:“委托”是一个只能获取的属性
解决方案
关于如何使用现代 SwiftUI 应用程序执行此操作的文档并不多,Info.plist 方法似乎不再适用。也许这会帮助其他人更快地解决这个问题:使用WKExtensionDelegateAdaptor
,类似于UIApplicationDelegateAdaptor
.
@main
struct WatchApp: App {
@WKExtensionDelegateAdaptor(ExtensionDelegate.self) var extensionDelegate
@SceneBuilder var body: some Scene {
...
}
推荐阅读
- go - 从接口获取 reflect.struct
- azure - Azure API 管理:无法为 SSL/TLS 安全通道建立信任关系
- sql - 如何创建透视查询以及具有多列的 group by 语句
- python - 'while',预期的'endblock'。您是否忘记注册或加载此标签?
- r - r - 按每天更改的日期过滤行
- html - 使用离子角度导航
- postgresql - 在 postgres 中使用 @> 运算符的问题
- java - 将实体传递给私有方法以从请求 DTO 进行更新
- scorm - 在 SCORM 2004(第 4 版)中,为什么汇总过程使用活动的所有子项而不是仅可用子项?
- python - 我如何使只有 1 个角色可以执行 command.py