transferUserInfo(_:) 不支持发送 类

transferUserInfo(_:) doesn't support sending classes

我正在尝试使用 WatchConnectivity 库将数据从我的手表传输到我的 iPhone。使用方法 transferUserInfo(_:),我发现我可以传输任何结构,可以是 Int、Double 或 String,但我不能传输带有数据的 class。

有趣的是,文档将函数描述为:

func transferUserInfo(_ userInfo: [String : Any] = [:]) -> WCSessionUserInfoTransfer

因此,我会将 Any 视为任何结构或 class。我没有具体阅读该方法不支持传输 classes。我是否应该从参数描述中的句子中读到这个:“属性 列表 的字典,你想发送”?

有没有人对这个方法有比我从信息中得到的更好的见解?

文档指定 userInfo 参数为:

A dictionary of property list values that you want to send

其中的“属性 列表”位很重要。如果您查看 Property List Programming Guide,我们可以看到 属性 列表值的数据类型是:

CFString, CFNumber, CFBoolean, CFDate, and CFData

(当我们在这些上下文中使用它们时,它们会桥接到适当的 Objective-C 和 Swift 类型。此外,这些类型的字典和数组也可以工作。)

尝试将您自己的 class 类型作为值包含在 userInfo 中(尽管它不会引发编译时错误)不应期望在运行时传输。