XOR в предикате Core Data? - PullRequest
       3

XOR в предикате Core Data?

1 голос
/ 29 ноября 2011

Есть ли способ использовать XOR в качестве оператора для предиката.

У меня есть объект File, и я хочу знать, есть ли файл на английском языке. Если он не доступен на английском, он должен вернуть мне немецкую версию. Если оба доступны, он не должен возвращать немецкую версию. Вот почему мне нужен XOR.

Пример:

[NSPredicate predicateWithFormat:@"file.language = 'en' XOR file.language = 'de'"];

Это вернет только английский файл.

1 Ответ

2 голосов
/ 29 ноября 2011

По http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-SW1, похоже, такого оператора нет. При необходимости вы должны будете использовать парантезы и преобразовать XOR b в (a И НЕ b) ИЛИ (НЕ a и b). В любом случае, обратите внимание на комментарий Хеннинга о том, что это все равно не помогает. Одна из проблем в вашем утверждении состоит в том, что оно не сбалансировано, то есть вы хотите, чтобы английская версия имела приоритет. Самый простой способ, вероятно, будет

  • массив фильтров по file.language = 'en'
  • если этот массив пуст:
    • массив фильтров по file.language = 'de'

Таким образом, вы можете обеспечить приоритет английского файла.

...