データのフィルタリング - SwiftUI
項目一覧
SwiftUI ビューでの観察
このページの例で使用されている @ObservedResults
プロパティ ラッパーは SwiftUI ビューでの使用を意図したものです。 代わりにビューモデルで結果を確認するには、変更リスナーを登録します。
Realm コレクションの検索
バージョン 10.19.0 の新機能。
Realm Swift SDKを使用すると、.searchable を拡張できます 。 ObservedResults を使用して Realm をクエリする場合、結果セット内でコレクションと邦土を指定して、検索可能としてマークできます。
コレクションは、OserveredResults クエリによって表されるバインドされたコレクションです。 この例では、Realm 内のすべてのドキュメント オブジェクトのコレクションを表すdogs
変数です。
キーパスは、検索するオブジェクトのプロパティです。 この例では、犬のコレクションを犬の名前で検索しています。 Realm Swift .searchable
実装では、 String
型のキーパスのみがサポートされます。
struct SearchableDogsView: View { Dog.self) var dogs ( private var searchFilter = "" var body: some View { NavigationView { // The list shows the dogs in the realm. List { ForEach(dogs) { dog in DogRow(dog: dog) } } .searchable(text: $searchFilter, collection: $dogs, keyPath: \.name) { ForEach(dogs) { dogsFiltered in Text(dogsFiltered.name).searchCompletion(dogsFiltered.name) } } } } }
ObservedResults による Realm のフィルタリングまたはクエリ
@ObservedResultsプロパティ ラッパーは Realm を開き、指定されたタイプのすべてのオブジェクトを返します。 ただし、 @ObservedResults
をフィルタリングまたはクエリして、ビュー内のオブジェクトのサブセットのみを使用することはできます。
Tip
以下も参照してください。
Realm がサポートするクエリ構文とクエリのタイプの詳細については、「読み取り - Swift SDK 」および「データのフィルタリング - Swift SDK 」を参照してください。
N述語によるフィルタリング
NPredify Query@ObservedResults
API を使用して をフィルタリングするには、 NPredate を を の引数として使用する方法を示します。filter
struct FilterDogsViewNSPredicate: View { Dog.self, filter: NSPredicate(format: "weight > 40")) var dogs ( var body: some View { NavigationView { // The list shows the dogs in the realm. List { ForEach(dogs) { dog in DogRow(dog: dog) } } } } }
Realm Type-セーフ クエリ API によるクエリ
バージョン 10.24.0 の新機能: ObservedResults で型セーフなクエリを実行するには、を使用します。
Realm 型セーフなクエリ APIで@ObservedResults
を使用するには、 のクエリを引数としてwhere
に渡します。
struct FilterDogsViewTypeSafeQuery: View { Dog.self, where: ( { $0.weight > 40 } )) var dogs ( var body: some View { NavigationView { // The list shows the dogs in the realm. List { ForEach(dogs) { dog in DogRow(dog: dog) } } } } }
セクションのフィルタリングされた結果
バージョン 10.29.0 の新機能。
@ObservedSectionedResultsプロパティ ラッパーは Realm を開き、指定されたキーパスでセクションに分割された指定されたタイプのすべてのオブジェクトを返します。 上記の@ObservedResults
と同様に、 @ObservedSectionedResults
をフィルタリングまたはクエリして、ビュー内のオブジェクトのサブセットのみを使用できます。
Dog.self, ( sectionKeyPath: \.firstLetter, where: ( { $0.weight > 40 } )) var dogs