【发布时间】:2019-11-02 15:47:01
【问题描述】:
有没有办法在ForEach 循环中迭代Dictionary? Xcode 说
通用结构 'ForEach' 要求 '[String : Int]' 符合 'RandomAccessCollection'
那么有没有办法让 Swift 字典符合 RandomAccessCollection,或者这是不可能的,因为字典是无序的?
我尝试过的一件事是迭代字典的键:
let dict: [String: Int] = ["test1": 1, "test2": 2, "test3": 3]
...
ForEach(dict.keys) {...}
但keys 不是Strings 的数组,它的类型是Dictionary<String, Int>.Keys(不确定何时更改)。我知道我可以编写一个辅助函数,它接受一个字典并返回一个键数组,然后我可以迭代那个数组,但是没有内置的方法,或者更优雅的方法吗?我可以扩展Dictionary 并使其符合RandomAccessCollection 之类的吗?
【问题讨论】:
-
在 WWDC21 上,Apple 宣布了
Collections软件包,其中包括OrderedDictionary,可与ForEach无缝协作 - 请参阅 this answer。
标签: swift dictionary swiftui