【问题标题】:Value of type 'CustomObject' does not conform toe expected dictionary value type 'AnyObject'“CustomObject”类型的值不符合预期的字典值类型“AnyObject”
【发布时间】:2016-05-14 18:12:39
【问题描述】:

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

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

但是,我收到以下错误:

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

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

【问题讨论】:

  • 什么是WeatherReport?是struct吗?
  • @luk2302 它只是一个自定义类(不是结构),从一个空的 Swift 文件创建
  • @luk2302 啊,仔细一看,居然是struct!我想这不是因为我经常上课。这似乎解决了它。谢谢
  • 这是因为它是一个结构而不是一个类。使用一个类解决了它。

标签: swift watchos-2 watchconnectivity


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2016-10-28
    相关资源
    最近更新 更多