繁体   English   中英

是否可以在 SwiftUI 中的 ForEach 中迭代字典?

[英]Is it possible to iterate a dictionary inside ForEach in SwiftUI?

我正在尝试从 SwiftUI 视图中的 viewModel 迭代 @Published 字典。 我收到一条错误消息:

初始化程序 'init(_:id:content:)' 要求 'Dictionary<InterestDomain, Bool>.Keys' 符合 'RandomAccessCollection'

如何在 ForEach 中迭代字典? 这是我的代码:

ForEach(viewModel.userDomains.keys.indices, id: \.self) { index in
    VStack {
        DomainOfInterestElement(isActive: self.$isActive, domain: self.viewModel.userDomains.keys[index].name)
        if index != self.viewModel.domains.count - 1 {
            Divider().padding(.bottom, 12)
        }
    }
}.padding([.trailing, .leading], 12)

这是因为 Dictionary 是无序的 所以它的键也是无序的

您需要使用Array对其进行排序:

ForEach(Array(viewModel.userDomains.keys).indices, id: \.self) { ...

由于它们是随机排序的,您可能还想对它们进行排序:

ForEach(Array(viewModel.userDomains.keys).sorted().indices, id: \.self) { ...

但是随着排序和排序变得越来越复杂,您可能会考虑将逻辑移到ViewModel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM