わかりました。ユーザーに5つの検索/フィルター条件を要求する基本的なiPadアプリがあります。このデータに基づいて、コアデータデータベースに移動し、その基準に一致する管理対象オブジェクトをすべて引き出す必要があります。同じリクエストに複数の述語を適用する必要があるようですが、それは可能ですか?それとも、本当に長い派手な述語を書くことができますか?複数の要件がありますか?どのようにアプローチすればよいですか?
フェッチ要求を介してすべてのエンティティを取得してから、各配列をループして、検索条件に一致するオブジェクトを取得することをお勧めしますか?
お知らせ下さい!
はい、それは可能です。複合述語を探しています。AND述語の例を次に示します。
NSPredicate *compoundPredicate
= [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray of Predicates]];
必要に応じて、notPredicateWithSubpredicates
およびorPredicateWithSubpredicates
を使用することもできます。
ドキュメントへのリンク https://developer.Apple.com/documentation/foundation/nscompoundpredicate
let fetchRequest: NSFetchRequest<YourModelEntityName> = YourModelEntityName.fetchRequest()
let fooValue = "foo"
let barValue = "bar"
let firstAttributePredicate = NSPredicate(format: "firstAttribute = %@", fooValue as CVarArg)
let secondAttributePredicate = NSPredicate(format: "secondAttribute = %@", barValue as CVarArg)
fetchRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [firstAttributePredicate, secondAttributePredicate])
さまざまなタイプのNSCompoundPredicate
コンストラクターの詳細については、 ここ を参照してください。