После обновления Xcode 9.3 я заметил, что если вы хотите иметь такой Predicate:
let predicate = NSPredicate(format: "preferred = %@", true as CVarArg)
У вас авария. Но в Xcode 9.2 это не было проблемой. Есть идеи?
После обновления Xcode 9.3 я заметил, что если вы хотите иметь такой Predicate:
let predicate = NSPredicate(format: "preferred = %@", true as CVarArg)
У вас авария. Но в Xcode 9.2 это не было проблемой. Есть идеи?
// Решение 3 [ Документация Apple ]
let predicate = NSPredicate(format: "preferred == TRUE")
Исключение возникает потому, что true
не является объектом (%@
). Вам нужен заполнитель %d
let predicate = NSPredicate(format: "preferred = %d", true)
Я думаю, вы также можете использовать это:
NSPredicate(format: "preferred = true")
После небольшого расследования я обнаружил, как это исправить. Короче говоря:
// 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. типа, когда нам приходится иметь дело с такого рода методами.
NSPredicate(format: "preferred = %@", true as NSNumber)
— еще один вариант.
- person Martin R; 17.05.2018