Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以在SwiftUI中迭代ForEach中的字典吗?_Swift_Foreach_Swiftui - Fatal编程技术网

可以在SwiftUI中迭代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

我正在尝试从SwiftUI视图中的viewModel迭代@PublishedDictionary。我的错误是:

初始值设定项“init(uquo:id:content:)”要求“Dictionary.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)

这是因为字典是无序的。所以它的键也是无序的

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

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

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

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

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

也许您的视图模型应该公开一个数组。