我希望编写一个 Swift 字典扩展,它将可靠地附加最终作为 URL 参数传递到 Web 请求中的相同数据。我尝试了各种技巧,但似乎都不起作用。
我得到的最接近的是:
extension Dictionary where Key: StringLiteralConvertible, Value: AnyObject {
mutating func auth() -> Dictionary {
self.updateValue("2.0", forKey: "api")
return self
}
}
但这仍然会引发错误:
Cannot invoke 'updateValue' with an argument list of type '(String, forKey:String)'
在“self.updateValue(...”这一行
有什么建议吗?提前致谢!
最佳答案
您只需要将您的字符串转换为!值还是一样! key 。此外,您已将您的方法声明为 mutating,因此您不需要返回任何内容。
extension Dictionary {
mutating func auth() {
updateValue("2.0" as! Value, forKey: "api" as! Key)
}
}
var dic: [String:AnyObject] = [:]
print(dic) // "[:]\n"
dic.auth()
print(dic) // "["api": 2.0]\n"
关于ios - Swift 2.1 词典扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35421820/