Вот суть вашей проблемы:
@"isSync == 0 AND SUBQUERY(toBookOrders, $x, $x.toBook == SELF)"
Если вы разделите это на два подпредиката, как предполагает Скотт, вы получите:
isSync == 0
SUBQUERY(toBookOrders, $x, $x.toBook == SELF)
Проблема в том, что каждый SUBQUERY
не возвращает true или false, как предикат должен. Он возвращает коллекцию (массив), и массив не то же самое, что истина или ложь. Таким образом, когда вы создаете предикат, вы получаете ошибку, что это неверный формат, потому что материал после AND
не является предикатом . Это просто выражение.
Вы вероятно хотите:
@"isSync == 0 AND SUBQUERY(toBookOrders, $x, $x.toBook == SELF).@count > 0"
Это даст вам предикат для поиска всех книг, где isSync
ложно, и по крайней мере одна из OrderBooks
Книги - это та Книга.