可以在SwiftUI中迭代ForEach中的字典吗?
我正在尝试从SwiftUI视图中的viewModel迭代@PublishedDictionary。我的错误是: 初始值设定项“init(uquo:id:content:)”要求“Dictionary.Keys”符合“RandomAccessCollection” 如何在ForEach中迭代字典?这是我的代码:可以在SwiftUI中迭代ForEach中的字典吗?,swift,foreach,swiftui,Swift,Foreach,Swiftui,我正在尝试从SwiftUI视图中的viewModel迭代@PublishedDictionary。我的错误是: 初始值设定项“init(uquo:id:content:)”要求“Dictionary.Keys”符合“RandomAccessCollection” 如何在ForEach中迭代字典?这是我的代码: ForEach(viewModel.userDomains.keys.indices, id: \.self) { index in VStack { Domain
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)
这是因为字典是无序的。所以它的键也是无序的 您需要使用
数组
对其进行排序:
ForEach(Array(viewModel.userDomains.keys).indices, id: \.self) { ...
由于它们是随机排序的,您可能还希望对它们进行排序:
ForEach(Array(viewModel.userDomains.keys).sorted().indices, id: \.self) { ...
但是,随着排序和排序变得越来越复杂,您可能会考虑将逻辑移到
ViewModel
。也许您的视图模型应该公开一个数组。