Ошибка 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!])

Рекомендации:

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