Создание NSCompoundPredicate из значений массива в Swift
Элемент списка
Поэтому я пытаюсь настроить запрос с несколькими условиями в Swift. SQL эквивалентен:
select BOARDID
from BOARD
where BOARDID not like "someBoard"
and BOARDID not like "anotherBoard"
..
У меня есть массив строк, и я пытаюсь перебрать каждую из них, чтобы создать субпредикат, добавить его в составной предикат, а затем создать запрос на выборку, используя этот составной предикат:
let openBoards = ["someBoard", "anotherBoard", "etc"],
request = NSFetchRequest(entityName: "Board")
var openBoardsSubPredicates: Array = [],
error: NSError? = nil
for board in openBoards {
var subPredicate = NSPredicate(format: "boardID not like '\(board)'")
openBoardsSubPredicates += subPredicate
}
request.predicate = NSCompoundPredicate.andPredicateWithSubpredicates(openBoardsSubPredicates)
Однако, это терпит неудачу в строке subPredicate var.
Спасибо!
1 ответ
Решение
Ошибка говорит вам, в чем проблема. Предоставляемый вами формат не является допустимым. В частности, нет сравнения "не нравится". Вы должны сделать "не" снаружи:
NSPredicate(format: "not (boardID like %@)", board)
Как упомянуто ниже @MartinR, NSPredicate может автоматически экранировать специальные символы, чтобы они не мешали предикату, вставляя переменную вместо использования интерполяции строк.