有没有办法循环遍历Dictionary一个ForEach?Xcode说
Dictionary
ForEach
通用结构’ForEach’要求’[String:Int]’符合’RandomAccessCollection’
所以有没有办法使Swift字典符合RandomAccessCollection,或者因为字典是无序的,那是不可能的吗?
RandomAccessCollection
我尝试过的一件事是迭代字典的键:
let dict: [String: Int] = ["test1": 1, "test2": 2, "test3": 3] ... ForEach(dict.keys) {...}
但keys不是Strings 的数组,而是类型Dictionary<String, Int>.Keys(不确定何时更改)。我知道我可以编写一个辅助函数,该函数接受字典并返回键的数组,然后可以迭代该数组,但是没有内置的方法或更优雅的方法吗?我可以扩展Dictionary并使其符合要求RandomAccessCollection吗?
keys
String
Dictionary<String, Int>.Keys
简单的回答:不。
正如您正确指出的那样,字典是无序的。ForEach监视他的收藏中的更改。此更改包括插入,删除, 移动 和更新。如果发生任何这些更改,将触发更新。参考:https://developer.apple.com/videos/play/wwdc2019/204/ at 46:10:
ForEach自动监视其收藏夹中的更改
我建议你看说话:)
您不能使用ForEach,因为:
UITableView
List
UITableViewCells