以下では、自分の実際の状況と同等であると確信しているコアデータスキーマの簡略化について説明します。コア関連するエンティティの任意の行のデータ述語
私は2つのエンティティFirst
と多対多の関係r
によってリンクされSecond
を持っています。
Second
には、2つのブール属性があります。take
とyou_should_not_take
とします。 take = true
のSecond
の関連行を終了する場合、First
の行を選択するクエリを作成したいとします。
私はこの述語試してみました:
NSPredicate(format: "ANY (%K == YES && %K == NO)", "r.take","r.you_should_not_take")
をしかし、Core Dataは私に次のエラーを与える:"[General] Unable to parse the format string"
。
たぶん私はこれを使用する必要があります:
NSPredicate(format: "((ANY %K == YES) && (ANY %K == NO))", "r.take","r.you_should_not_take")
を私はそれはそれは行を存在するx.take == YES
& &ためSecond
の行x
が存在する場合に限っこの最後の問い合わせがFirst
の行を選択することが怖いですy
Second
の場合はy.you_should_not_take == NO
、保証はありませんx == y
。
SQLクエリは非常に簡単ですが、コアデータにはあまり経験がありませんので、私はいくつかのクエリを試していますが(2番目のクエリが私の思うことを実行するかどうかテストします)その答えがSQLのように簡単であることを期待してここに尋ねました。
なぜだけではなく 'NSPredicate(フォーマット: "ANY%のK == YES"、 "r.take")'? –
@MartinR元のスキーマの2つの属性は無関係です。私はこの質問に対して異なる名前を選ぶことができました。 – Nisba
したがって、 'take == true'と' you_should_not_take == false'の(少なくとも1つの)2番目のオブジェクトに関連するすべてのFirstオブジェクトを選択しますか?あれは正しいですか? –