回到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?'。我不明白为什么。 documentation不会向NSCompoundPredicate
显示任何弃用或更改。
有人可以告诉我如何纠正这个问题吗?
谢谢。
答案 0 :(得分:7)
初始化程序
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!])
参考文献: