“CustomObject”类型的值不符合预期的字典值类型“AnyObject”

时间:2016-05-14 18:12:40

标签: swift watch-os-2 watchconnectivity

我正在通过应用程序上下文将数据从我的iOS应用程序传输到Watch扩展程序。我想发送一个我创建的自定义对象(名为 WeatherReport )。

let context = ["report" : WeatherReport]
WCSession.defaultSession().updateApplicationContext(context)

但是,我收到以下错误:

  

WeatherReport 类型的值不符合预期字典   值类型'AnyObject'

我想知道为什么我无法将自定义对象设置为我尝试作为applicationContext传递的字典中的值。

1 个答案:

答案 0 :(得分:1)

即使您可以通过编译器错误,也会出现运行时错误。 WCSession词典只能包含property list types,它们只是基本类型,如字符串,数字,数据等。

如果您确实要发送自定义对象,则必须先将其序列化。更好的解决方案是将对象转换为plist字典(每个属性都成为字典中的键值)。