2016-02-16 112 views
1

我希望能夠編寫一個Swift字典擴展,它會將最終得到的可靠數據作爲URL參數附加到Web請求中。我嘗試了各種技巧,似乎沒有任何工作。Swift 2.1字典擴展

我已經得到最接近的是:

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(...」

有什麼建議?在此先感謝!

+0

'self.updateValue(「2.0」as StringLiteralConvertible,forKey:「api」as AnyObject)'help?我認爲它的類型不匹配,但我遠離辦公室mac。 – Ajwhiteway

回答

4

你只需要投你的字符串!值或!關鍵。也可爲y你已經宣佈你的方法是變異的,所以你不需要返回任何東西。

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"