如何在swift中更新字典键?

时间:2015-10-17 12:11:41

标签: swift dictionary

我正在尝试使用型号名称和价格制作两列表格。可以编辑和保存每个模型(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评论)

2 个答案:

答案 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")