我试图找出 Swift
中的最佳方法,将 Array
的值添加到 Dictionary
中的 Value
. 我想 Build 一个按其名字的第一个字母排序的联系人字典 . 例如[A:[亚伦,亚当等],B:[布莱恩,布列塔尼,等...],......]
我发现了这个功能:
updateValue(_:forKey:)
并尝试在循环中使用它:
for contact in self.contacts.sorted() {
self.contactDictionary.updateValue([contact], forKey: String(describing: contact.characters.first))
}
但是当我尝试使用它时,它用新的数组替换了现有的数组 . 我知道我可以手动检查字典中的键是否存在,如果存在,检索数组然后追加新值,否则添加新的键/值对但我不确定Swift是否提供更容易/更好的方法来做到这一点 .
任何见解都将非常感谢!
2 回答
您可以使用
reduce(into:)
方法(Swift4),如下所示:如果您使用的是Swift3或更早版本,则需要在闭包内创建一个可变结果字典:
请注意,结果未排序 . 字典是无序集合 . 如果需要对字典进行排序并返回一组(key,Value)元组,可以使用按键排序,如下所示:
Swift 4的新词典初始化程序可以为您完成所有操作: