Ошибка NSCompoundPredicate в Xcode 6.1
Вернувшись в Xcode 6, в проекте с использованием Core Data у меня была следующая строка. Работало нормально.
fetchRequest.predicate = NSCompoundPredicate(type: .AndPredicateType, subpredicates: [predicate, datePredicate])
Предикат и datePredicate имеют NSPredicate
тип.
Вчера я обновился до Xcode 6.1, и теперь эта строка выше выдает эту ошибку. Не удалось найти элемент 'AndPredicateType'. Указание всего значения, как это NSCompoundPredicateType.AndPredicateType
тоже не работал
Затем я изменил строку, чтобы использовать ее строку метода удобства ниже.
fetchRequest.predicate = NSCompoundPredicate.andPredicateWithSubpredicates([predicate, datePredicate])
Теперь я получаю новую ошибку. Невозможно преобразовать тип выражения '()' в тип 'NSPredicate?', Я не понимаю почему. Документация не показывает никаких амортизаций или изменений NSCompoundPredicate
или.
Может кто-нибудь сказать, пожалуйста, как это исправить?
Спасибо.
1 ответ
Инициализатор
extension NSPredicate {
convenience init?(format predicateFormat: String, _ args: CVarArgType...)
}
теперь не удалось инициализировать. Возвращает необязательный NSPredicate?
и вы должны развернуть результат (или использовать необязательную привязку). Например:
let compoundPredicate = NSCompoundPredicate(type: .AndPredicateType, subpredicates: [predicate!, datePredicate!])
// Or:
let compoundPredicate = NSCompoundPredicate.andPredicateWithSubpredicates([predicate!, datePredicate!])
Рекомендации: