gpt4 book ai didi

swift - 使用 updateApplicationContext 将自定义对象从 Apple Watch 传输到 iPhone

转载 作者:行者123 更新时间:2023-11-28 06:06:29 26 4
gpt4 key购买 nike

我是 Swift 的新手,开始了我的第一个应用。

我正在尝试使用 updateApplicationContext 将数据从 Apple Watch 传输到 iPhone,但只收到一个错误:

[WCSession updateApplicationContext:error:]_block_invoke failed due to WCErrorCodePayloadUnsupportedTypes

这是我的 WatchKit 扩展中的代码:

var transferData = [JumpData]()

func transferDataFunc() {
let applicationDict = ["data":self.transferData]
do {
try self.session?.updateApplicationContext(applicationDict)
} catch {
print("error")
}
}

这些是我要发送的对象结构:

class AltiLogObject {

let altitude : Float
let date : Date

init (altitude: Float) {
self.altitude = altitude
self.date = Date.init()
}

init (altitude: Float, date : Date) {
self.altitude = altitude
self.date = date
}

}

class JumpData {

let date : Date
let altitudes : [AltiLogObject]

init(altitudes: [AltiLogObject]) {
self.altitudes = altitudes
self.date = Date.init()
}
init(altitudes: [AltiLogObject], date : Date) {
self.date = date
self.altitudes = altitudes
}
}

为了让它完整,接收函数的代码:

private func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) {
let transferData = applicationContext["data"] as! [JumpData]

//Use this to update the UI instantaneously (otherwise, takes a little while)
DispatchQueue.main.async() {
self.jumpDatas += transferData
}
}

欢迎任何提示,因为我现在正努力让它运行一个多星期。

最佳答案

您只能通过 updateApplicationContext() 发送属性列表值 - documentation说明了这一点,但一点也不清楚。

可以在 https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/PropertyLists/AboutPropertyLists/AboutPropertyLists.html 找到您可以发送的对象类型

显然您的自定义对象类型不受支持,因此您需要做的是将属性分解为组成部分(例如您的高度和日期属性),将它们单独发送到传递给 updateApplicationContext() 的 applicationContext 字典中然后在接收端重构对象。

这当然是一种真正的痛苦,但这就是这一切的运作方式。

HTH

关于swift - 使用 updateApplicationContext 将自定义对象从 Apple Watch 传输到 iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48054216/

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