作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法遍历 Dictionary
在 ForEach
环形? Xcode 说
Generic struct 'ForEach' requires that '[String : Int]' conform to 'RandomAccessCollection'
RandomAccessCollection
,或者这是不可能的,因为字典是无序的?
let dict: [String: Int] = ["test1": 1, "test2": 2, "test3": 3]
...
ForEach(dict.keys) {...}
keys
不是
String
的数组s,它的类型是
Dictionary<String, Int>.Keys
(不确定何时更改)。我知道我可以编写一个辅助函数,它接受字典并返回一个键数组,然后我可以迭代该数组,但是没有内置的方法来做到这一点,或者更优雅的方法?我可以延长
Dictionary
并使其符合
RandomAccessCollection
或者其他的东西?
最佳答案
简单的回答:没有。
正如您正确指出的那样,字典是无序的。 ForEach 监视其集合的变化。这些更改包括插入、删除、移动 和更新。如果发生任何这些更改,将触发更新。引用:https://developer.apple.com/videos/play/wwdc2019/204/在 46:10:
A ForEach automatically watches for changes in his collection
UITableView
在单元格可以回收时重用单元格, List
由 UITableViewCells
支持,我认为 ForEach
正在做同样的事情),它需要计算要显示的单元格.它通过从数据源查询索引路径来实现。从逻辑上讲,如果数据源是无序的,那么索引路径是没有用的。 关于SwiftUI 使用 ForEach 遍历字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56675532/
我是一名优秀的程序员,十分优秀!