如何使用 Date 类型的 NSPredicate

How to use NSPredicate with Date type

我正在尝试根据日期制作 NSPredicate...我试过这个:

let datePredicate = NSPredicate(format: "due_date < %@", Date())

我不确定,但是 iirc,这以前有效吗?

现在我得到这个错误:

Argument type 'Date' does not conform to expected type 'CVarArg'

我这样试过

...Date() as NSDate, 但那也失败了。

如何解决?

您必须将覆盖类型 Date 转换回其对应的 Foundation NSDate:

let dueDate = Date()
let pred1 = NSPredicate(format: "due_date < %@", dueDate as NSDate)

检查此参考资料

要将当前日期用作谓词参数,只需创建一个 NSDate 实例

let datePredicate = NSPredicate(format: "due_date < %@", NSDate())

对于日期变量,您可以使用

aDate as NSDate

aDate as CVarArg

如果您遇到错误

'Date?' is not convertible to 'NSDate'

那么代码不是真正的代码,因为 Date()NSDate() 都是非可选的。