Xcode 6.1中的NSCompoundPredicate错误

时间:2014-10-21 06:00:02

标签: ios core-data swift nscompoundpredicate xcode6.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?'。我不明白为什么。 documentation不会向NSCompoundPredicate显示任何弃用或更改。

有人可以告诉我如何纠正这个问题吗?

谢谢。

1 个答案:

答案 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!])

参考文献: