swift No exact matches in call to instance method ‘merge‘

  • swift 字典 merge
  • swift 合并两个字典

问题

Swift 在合并两个字典的时候报如下错误:

No exact matches in call to instance method 'merge'

var dictionary1 = ["a" : "1", "b" : "2"]
var dictionary2: [String: Any] = [:]
dictionary1.merge(dictionary2, uniquingKeysWith: {$1})

在这里插入图片描述

解决

var dictionary1 = ["a" : "1", "b" : "2"]
var dictionary2: [String: String] = [:]
dictionary1.merge(dictionary2, uniquingKeysWith: {$1})

分析

出现这个问题的原因时,dictionary1 的 value 都是 String 类型的,所以它只能 merge 相同类型的 value 值,但是 dictionary2 开始的时候声明 value 是 Any,不是一个明确的String 类型,所以不能 merge。

如果 dictionary1 声明的时候是[String: Any], dictionary2 也是[String: Any],这样就可以使用 merge 方法。

对 merge 这个方法的理解存在一些偏差,当且仅当被 merge 的字典和该字典的 value 类型一致的时候才能使用 merge 方法。

你可能感兴趣的:(#,Swift,merge,swift,合并字典)