[英]Swift (String:AnyObject) is not convertible to [String:AnyObject]
[英]Swift: '()' is not convertible to '[String : AnyObject]'
我添加了一个自定义extension
,以便能够合并两个dictionaries
但是我的方法调用此新扩展名时遇到了麻烦。
AppDelegate中定义的字典扩展
extension Dictionary {
mutating func merge<K, V>(dict: [K: V]){
for (k, v) in dict {
self.updateValue(v as Value, forKey: k as Key)
}
}
}
使用此新扩展名的方法
class func addFbTokenParameter(json: [String: AnyObject]) -> [String: AnyObject] {
if KeychainManager.getString(KeychainManager.StaticVars.kFbToken) != nil {
let token = KeychainManager.getString(KeychainManager.StaticVars.kFbToken)!
var tokenParams: [String: AnyObject] = [
kFacebook: [
kToken: token
]
]
var finalParams: [String: AnyObject] = tokenParams.merge(json)
return finalParams
}
else {
return json
}
}
我在此行收到此错误:
var finalParams: [String: AnyObject] = tokenParams.merge(json)
这个错误是什么意思? 我该如何纠正呢?
谢谢!
tokenParams.merge(json)
返回Void
aka ()
。 您可以通过以下方式简单地修复此代码:
tokenParams.merge(json)
var finalParams: [String: AnyObject] = tokenParams
您的扩展程序需要返回可分配的变异字典:
extension Dictionary {
mutating func merge<K, V>(dict: [K: V]) -> [K: V] {
for (k, v) in dict {
self.updateValue(v as Value, forKey: k as Key)
}
return self
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.