繁体   English   中英

Swift:'()'不能转换为'[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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM