Сочетание "И" и "Или" на 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]
Другие вопросы по тегам