我添加了一个自定义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)
这个错误是什么意思?我该如何纠正呢?
谢谢!
答案 0 :(得分:1)
tokenParams.merge(json)
正在返回Void
又名()
。
您可以通过以下方式修复此代码:
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
}
}