Далее я опишу упрощение моей схемы Core Data, которое, как я уверен, будет эквивалентно моей реальной ситуации.
У меня есть две сущности First
и Second
, связанные отношением "многие ко многим" r
.
Second
имеет два логических атрибута, назовем их take
и you_should_not_take
. Я хочу сделать запрос, который выбирает строку First
, если он выходит из связанной строки Second
для с take = true
.
Я пробовал этот предикат:
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")
но я боюсь, что этот последний запрос выберет строку First
, если и только если существует строка x
из Second
, для которой x.take == YES
&& существует строка y
, если Second
для которой y.you_should_not_take == NO
, без гарантии, что x == y
.
SQL-запрос было бы очень просто сделать, но я не очень разбираюсь в Core Data, поэтому, пока я попробую еще несколько запросов (и я проверю, делает ли второй запрос то, что я думаю), я также спросил здесь надеясь, что ответ будет таким же простым, как в SQL.
NSPredicate(format: "ANY %K == YES", "r.take")
? - person Martin R   schedule 10.12.2016take==true
иyou_should_not_take==false
? Это правильно? - person Martin R   schedule 10.12.2016