【发布时间】:2020-05-13 00:09:38
【问题描述】:
我正在使用 SwiftUI 构建 UI,并且我有一个用于构建 List 元素的数组。现在我想根据来自@EnvironmentObject 的@Published 变量对该列表进行排序。
方法一
我尝试让数组已经排序,将环境对象传递给排序方法:
List(getArraySorted(environmentObject)) { item in
//do stuff with item
}
这将编译,但如果environmentObject 更改,列表将不会更新。我也尝试过传入environmentObject.variableToBaseSortOn,但无济于事。
方法2
我尝试在 Swift UI 中对数组进行内联排序:
List(array.sorted(by: { (lhs, rhs) -> Bool in
// do sorting based on self.environmentObject
})) { item in
// do stuff with item
}
这会编译,但是会崩溃:
Fatal error: No ObservableObject of type EnvironmentObjectClass found.
A View.environmentObject(_:) for EnvironmentObjectClass may be missing as an ancestor of this view.
崩溃中的提示不正确,environmentObject 被设置,self.environmentObject 被设置为正确的对象。
【问题讨论】:
-
您可以在此处复制可重现的代码示例吗?
标签: swift swiftui swiftui-list swiftui-environment