【问题标题】:Cannot invoke <function> with an argument list of type Dictionary<Generic, Generic>无法使用 Dictionary<Generic, Generic> 类型的参数列表调用 <function>
【发布时间】:2015-11-30 19:02:25
【问题描述】:

我有一个具有以下签名的函数:

static func dictionaryToJSON<K : ToJSON,V : ToJSON> ( dictionary : Dictionary<K,V>) -> JValue

您可以找到它here

当我尝试调用此函数时,我收到错误 Cannot invoke 'dictionaryToJSON' with an argument list of type '(Dictionary&lt;Domain, Account&gt;)'。这是电话:

let accounts : JValue = Aeson.dictionaryToJSON( self.accounts)

self.accounts 的类型为Dictionary&lt;Domain,Account&gt;,Domain 和Account 都实现了协议ToJSON。有什么理由不进行类型检查吗?这是针对 Swift 2(XCode 7 beta 6)的,所以可能存在编译器错误?

【问题讨论】:

  • 您的 Domain 类型是否实现了 Hashable 协议?这是成为字典中的键的要求。
  • 是的,Domain 实现了 Hashable。

标签: xcode swift generics swift2 xcode7-beta6


【解决方案1】:

看起来我注释掉了 Domain 的 ToJSON 实现以调试并忘记了。它现在正在工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多