本文主要是介绍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 No exact matches in call to instance method ‘merge‘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!