Xcode 9.3 - сбой NSPredicate Bool - PullRequest
0 голосов
/ 17 мая 2018

После обновления Xcode 9.3 я заметил, что если вы хотите иметь Predicate, как это:

let predicate = NSPredicate(format: "preferred = %@", true as CVarArg)

У вас сбой. Но в Xcode 9.2 это не было проблемой. Есть идеи?

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Я думаю, вы также можете использовать это:

NSPredicate(format: "preferred = true")
0 голосов
/ 17 мая 2018

// Решение 3 [ Документация Apple ]

let predicate = NSPredicate(format: "preferred == TRUE")

Исключение возникает из-за того, что true не является объектом (%@). Вам нужен %d заполнитель

let predicate = NSPredicate(format: "preferred = %d", true)
0 голосов
/ 17 мая 2018

После небольшого расследования я обнаружил, как это исправить. Короче говоря:

// Solution 1 [ NSNumber ]
let bool = NSNumber(booleanLiteral: true)
let predicate = NSPredicate(format: "preferred = %@", bool as CVarArg)

// Solution 2 [ Bool ] (static example)
let predicate = NSPredicate(format: "preferred == YES")

Как также объяснено здесь , просто лучше иметь дело с типом Obj-C, а не с типом Swift, когда нам приходится иметь дело с такого рода методами.

...