我一整天都在尋找最簡單的解決方案來對@FetchRequest 進行排序,但沒有成功!
我試過這個小修改:
@AppStorage("sortTitle") private var sortTitle = true
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: [ sortTitle ? SortDescriptor(\.title) : SortDescriptor(\.date) ]) private var items: FetchedResults<Item>
當然它不起作用。實際上,我正在尋找一些非常簡單的東西,因為這不是動態排序;它更像是一種一次性排序,可以通過sortTitle從“設定”螢屏切換來完成。
當然有一個在線解決方案(在下面的鏈接上),但我目前還不足以正確理解它! https://www.youtube.com/watch?v=O4043RVjCGU
提前感謝您的反饋。:)
uj5u.com熱心網友回復:
這值得一試,但老實說@FetchRequest,它似乎是為只初始化一次的 ContentView 而設計的,這不是 SwiftUI 應該作業的方式。
.onAppear {
items.sortDescriptors = sortTitle ? [SortDescriptor(\.title)] : [SortDescriptor(\.date)]
}
.onChange(of: sortTitle) { newSortTitle in
items.sortDescriptors = sortTitle ? [SortDescriptor(\.title)] : [SortDescriptor(\.date)]
}
缺陷在于,如果重新初始化包含此代碼的視圖,則對 sortDescriptors 所做的更改將丟失。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/506541.html
