我正在尝试使用型号名称和价格制作两列表格。可以编辑和保存每个模型(see also)。为此,我想我需要一本字典:
var models = ["iPhone 6 plusss Gold 128 GB" : 1000,"iPhone 6 Plus Gold 64 GB" : 500, "iPhone 6 Gold 128 GB" : 250, "iPhone 6 Gold 16 GB" : 100]
但是我想更新密钥0,因为我拼错了#34; plusss&#34 ;,例如。我怎么能这样做?
我找到了如何更新密钥值对的方法:
models.updateValue(200, forKey: "iPhone 6 Gold 16 GB")
但是如何更新密钥?
[编辑]显然我是"思考"关于它的错误方式。我正在阅读字典,我认为最好的方法是上课(如vadian评论)
答案 0 :(得分:3)
在Swift中,字典需要密钥才能确认Hashable协议。因此,为了更改密钥,您需要删除以前的条目并添加新条目。您无法更改密钥,因为条目可能会转到另一个存储桶。有必要查找旧条目删除它并无论如何插入新条目。有关更多信息,哈希表如何工作,请查看以下线程How does a hash table work?
答案 1 :(得分:3)
您无法更改密钥,但可以删除现有密钥并添加新密钥:
extension Dictionary {
mutating func changeKey(from: Key, to: Key) {
self[to] = self[from]
self.removeValueForKey(from)
}
}
var models = ["iPhone 6 plusss Gold 128 GB" : 1000,"iPhone 6 Plus Gold 64 GB" : 500, "iPhone 6 Gold 128 GB" : 250, "iPhone 6 Gold 16 GB" : 100]
models.changeKey("iPhone 6 plusss Gold 128 GB", to: "iPhone 6 plus Gold 128 GB")