使用SwiftUI对@FetchRequest进行排序(非动态)



我花了一整天的时间试图找到对@FetchRequest排序的最简单解决方案,但没有成功!

我尝试过这个小修改:

@AppStorage("sortTitle") private var sortTitle = true
@Environment(.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: [ sortTitle ? SortDescriptor(.title) : SortDescriptor(.date) ]) private var items: FetchedResults<Item>

当然,这是行不通的。事实上,我正在寻找一些非常简单的东西,因为这不是一个动态排序;它更像是一次一次性排序,可以通过从"设置"屏幕切换CCD_ 1来完成。

当然有一个在线解决方案(在下面的链接上(,但我目前还不够好,无法正确理解!https://www.youtube.com/watch?v=O4043RVjCGU

提前感谢您的反馈。:(

这值得一试,但老实说,@FetchRequest似乎是为只初始化一次的ContentView设计的,这不是SwiftUI的工作方式。

.onAppear {
items.sortDescriptors = sortTitle ? [SortDescriptor(.title)] : [SortDescriptor(.date)]
}
.onChange(of: sortTitle) { newSortTitle in
items.sortDescriptors = sortTitle ?  [SortDescriptor(.title)] : [SortDescriptor(.date)]
}

缺陷在于,如果包含此代码的视图被重新初始化,则对sortDescriptors所做的更改将丢失。

最新更新