NSP предикат в быстром для пустой строки - PullRequest
0 голосов
/ 28 сентября 2018

Swift 4.2 iOS 11.x

Попытка прочитать записи в базе данных iCloud, для которых установлено поле lineOwner, но изо всех сил пытаюсь создать работающий NSPredicate!

Это выглядит нормально,но не анализирует.

let predicate = NSPredicate(format: remoteAttributes.lineOwner + " != %@",0)

Я получаю неверное сообщение об ошибке предиката [и неприятный сбой в сделке].Потратьте пару часов на это и потеряв волю к жизни.

Если я распечатываю базу данных, я вижу это.

enter image description here

1 Ответ

0 голосов
/ 28 сентября 2018

Вы можете просто сравнить с пустыми String, "".Заполнитель %@ представляет String, поэтому сбой происходит, потому что вы предоставляете NSPredicate вместо String.

. Вы также должны использовать заполнитель %K дляимена переменных вместо добавляемых строк.

let predicate = NSPredicate(format: " %K != %@", remoteAttributes.lineOwner, "")

Если вы также хотите отфильтровать nil значения, вы можете использовать составной предикат:

let predicate = NSPredicate(format: " %K != %@ AND %K != nil", remoteAttributes.lineOwner, "")
...