Сочетание "И" и "Или" на NSP-предикатах
Я хочу сделать что-то вроде этого:
NSPredicate(format: "name contains[cd] %@ AND (position == %@ OR position == %@), name, position1, position2)
Однако я попробовал это и продолжаю получать серьезные ошибки приложения Core Data. Затем я попытался использовать NSCompoundPredicate, но я также не могу комбинировать "И" и "ИЛИ".
Я прочитал " Объединение условий" И "и" ИЛИ "в NSPredicate, и оно отличается тем, что спрашивающий хотел получить" ИЛИ "в подколлекции, поэтому ответ включает в себя подзапрос, который мне не нужен.
Как мне это сделать?
1 ответ
Решение
У меня недостаточно репутации, чтобы оставить комментарий. То, что вы опубликовали, должно работать. Это может помочь опубликовать больше вашего кода, чтобы определить точную проблему.
В надежде, что это поможет вам разобраться в проблеме, я выложу рабочий образец с комбинированным AND
а также OR
:
let alice = Person(firstName: "Alice", lastName: "Smith", age: 24, position: "Up")
let bob = Person(firstName: "Bob", lastName: "Jones", age: 27, position: "Left")
let charlie = Person(firstName: "Charlie", lastName: "Smith", age: 33, position: "Right")
let quentin = Person(firstName: "Quentin", lastName: "Alberts", age: 31, position: "Down")
let people = [alice, bob, charlie, quentin]
let predicate = NSPredicate(format: "firstName contains[cd] %@ AND (position == %@ OR position == %@)", "e", "Up", "Down")
let filtered = (people as NSArray).filteredArrayUsingPredicate(predicate)
print(filtered)
// prints [Alice Smith, Quentin Alberts]