Ответ 1
Я предполагаю, что вам нужно:
[NSPredicate predicateWithFormat:@"isReward = NO OR isReward = nil"]
(В документах Apple здесь прямое сравнение с NO
должно быть действительным.)
В общем случае при сравнении с null
/nil
в терминах данных null == false
оценивается как false
и null != false
оценивает false
. Сравнение с null
обычно оценивается как false
, за исключением случаев, когда выполняется тестирование для IS NULL
.
Я бы также сказал, что индексирование вообще дает вам лучшие результаты при поиске равенства, а не неравенства. Это довольно просто для рефакторинга в вашем случае (хотя я не уверен, что это будет иметь значение для Core Data в целом).
Кроме того, если вы хотите, чтобы он всегда был YES
или NO
(и пропустил проверку для nil
), вам нужно явно установить значение по умолчанию NO
.
Однако у вас может быть семантическое значение, оставляя его nil
, пока оно явно не будет установлено вашим приложением. Это действительно зависит от того, что вы пытаетесь сделать.