Создание 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 может автоматически экранировать специальные символы, чтобы они не мешали предикату, вставляя переменную вместо использования интерполяции строк.

Другие вопросы по тегам