2014-10-21 2 views
2

Назад в Xcode 6, в проекте с использованием Core Data У меня была следующая строка. Он работал нормально.Ошибка NSCompoundPredicate в Xcode 6.1

fetchRequest.predicate = NSCompoundPredicate(type: .AndPredicateType, subpredicates: [predicate, datePredicate]) 

предикат и datePredicate имеет NSPredicate типа.

Вчера я обновился до Xcode 6.1, и теперь эта строка выше дает эту ошибку Не удалось найти участника 'AndPredicateType'. Указание всего значения NSCompoundPredicateType.AndPredicateType тоже не работает.

Затем я изменил линию, чтобы использовать ее линию методов удобства ниже.

fetchRequest.predicate = NSCompoundPredicate.andPredicateWithSubpredicates([predicate, datePredicate]) 

Теперь я получаю новую ошибку не может преобразовать тип Выражение в «()» для типа 'NSPredicate?. Я не понимаю, почему. documentation не показывает никаких изменений или изменений в NSCompoundPredicate.

Может кто-нибудь скажет мне, как исправить это?

спасибо.

ответ

7

Инициализатором

extension NSPredicate { 
    convenience init?(format predicateFormat: String, _ args: CVarArgType...) 
} 

является failable инициализатор Теперь. Он возвращает необязательный NSPredicate?, и у вас есть , чтобы развернуть результат (или использовать необязательную привязку). Например:

let compoundPredicate = NSCompoundPredicate(type: .AndPredicateType, subpredicates: [predicate!, datePredicate!]) 
// Or: 
let compoundPredicate = NSCompoundPredicate.andPredicateWithSubpredicates([predicate!, datePredicate!]) 

Ссылки:

+0

Просто найти его сам тоже. ха-ха. Спасибо. Хорошо знать фактическую причину этого. – Isuru

Смежные вопросы