gpt4 book ai didi

ios - Swift WatchConnectivity 应用程序上下文作为字典

转载 作者:搜寻专家 更新时间:2023-11-01 07:09:08 25 4
gpt4 key购买 nike

我正在开发我的第一个 Apple Watch 应用程序(我的 iOS 应用程序的扩展)。我在将数据从一个 WKInterfaceController 发送到另一个时遇到了一个小问题。

我的第一个 Controller (InterfaceController.swift)didReceiveMessage,它从我的 iOS 应用接收数据。

func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
let myQrValue = message["qrCode"] as! String
let myQrImage = message["qrCodeImageData"] as! Data

var myData: [AnyHashable: Any] = ["myQrValue": myQrValue, "myQrImage": myQrImage]

if myQrValue.isEmpty == false {
WKInterfaceController.reloadRootControllers(withNames: ["QrScreen"], contexts: [myData])
}
}

然后在我的第二个 Controller (QrInterfaceController.swift) 中,我在下面获取从第一个 Controller 发送的数据 -

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

print("context \(context)")
if let myData = context {
print("myData \(myData)")
// userQrNumber.setText(myData)
}

if let myQrImage = myQrImage {
userQrImage.setImageData(myQrImage)
}

if let myQrLabel = myQrLabel {
userQrNumber.setText(myQrLabel)
}

self.setTitle("")
}

我被困住了(可能是个简单/愚蠢的问题)如何从第二个 Controller 的上下文中解析我的数据?

此外,didReceiveMessage 仅在我启动放置 sendMessage 代码的 ViewController 时第二次起作用。正常吗?

最佳答案

首先,您可能需要像这样重新声明 myData:

var myData: [String: Any] = ...

这样就简单多了。然后,在 awake 函数中,您将像这样继续:

if let myData = context as? [String: Any] {
if let myQrImage = myData["myQrValue"] as? Date {
...

这是否为您指明了正确的方向?

关于ios - Swift WatchConnectivity 应用程序上下文作为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45917403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com