@Query
は Observable で便利です。
引数に、検索条件や並び順を書いておけば、
監視して変更があれば、更新してくれます。
👉 【SwiftData】@Query の引数と Descriptor の関係
しかし、この検索条件や並び順の基準は
ユーザーの意図によって変更の必要があることのほうが多いです。
どうやって、書き換えるか。
struct UserListView: View {
@Query var users: [User]
init(sort: SortDescriptor<User>) {
_users = Query(sort: [sort])
👉 How to dynamically change a query's sort order or predicate - a free SwiftData by Example tutorial
struct BirdsSearchResults<Content: View>: View {
@Binding var searchText: String
@Query private var birds: [Bird]
private var content: (Bird) -> Content
init(searchText: Binding<String>, @ViewBuilder content: @escaping (Bird) -> Content) {
_searchText = searchText
_birds = Query(sort: \.creationDate)
self.content = content
}
どうやら、今現在としては、
_birds = Query(sort: \.creationDate)
というような
「_ (アンダースコア)」
を使った内部的な Query
の書き換えが本筋といったところでしょうか。
Query
の引数には、
SortDescriptor
や FetchDescriptor
もあるので、
複雑な条件により抽出も並び替えも可能です。
👉 【SwiftData】@Query の引数と Descriptor の関係
しかし、他の方法ないんですかね。
関連ワード: apple・iOS・iPhone・mac・macOS・Swift・SwiftData・SwiftUI・おすすめ・今さら聞けない・初心者・開発