无法使用Swift中的NSPredicate查询日期
我正在尝试在特定日期之后提取日期。 我的谓词如下:
NSPredicate(format: "date > \(currentDate)")
当我执行获取请求时,我发现了一个exception:
'Unable to parse the format string "date > 2015-07-08 03:00:00 +0000"'
我以为我可以这样做一个查询。 我究竟做错了什么?
NSPredicate(format:_:)
采用格式字符串和参数列表,但是您传递的是一个简单的字符串。 这不起作用,因为这个初始化器不只是在参数上调用stringWithFormat:
而是在构建谓词时查看参数的类型信息。
您可以通过将日期作为参数传递来使用该初始化程序:
let datePredicate = NSPredicate(format: "date > %@", currentDate)
在swift 3中,谓词变为:
let datePredicate = NSPredicate(format: "date > %@", currentDate as NSDate)
使用Swift 3,根据您的需要,您可以选择以下5种模式中的一种来解决您的问题。
#1。 使用NSPredicate
init(format:arguments:)
NSPredicate
init(format:arguments:)
程序和NSDate
实例
NSPredicate
有一个初始化程序,名为init(format:arguments:)
NSPredicate
,它具有以下声明:
init(format predicateFormat: String, arguments argList: CVaListPointer)
通过将参数列表中的值替换为格式字符串并解析结果来创建并返回新谓词。
与NSDate
使用时,可以使用init(format:arguments:)
NSPredicate
设置NSPredicate
实例,如下所示:
let date = NSDate() let predicate = NSPredicate(format: "date > %@", date)
#2。 在NSDate
实例中使用NSPredicate
init(format:argumentArray:)
初始化程序
NSPredicate
有一个名为init(format:argumentArray:)
的初始化程序,它具有以下声明:
init(format predicateFormat: String, argumentArray arguments: [Any]?)
通过将给定数组中的值替换为格式字符串并解析结果来创建并返回新谓词。
与NSDate
使用时,可以使用init(format:argumentArray:)
NSPredicate
设置NSPredicate
实例,如下所示:
let date = NSDate() let predicate = NSPredicate(format: "date > %@", argumentArray: [date])
#3。 使用NSPredicate
init(format:arguments:)
NSPredicate
init(format:arguments:)
程序,将Date
实例转换为NSDate
与Date
使用时,可以通过将Date
实例强制转换为NSDate
来设置NSPredicate
实例,如下所示:
let date = Date() let predicate = NSPredicate(format: "date > %@", date as NSDate)
#4。 使用NSPredicate
init(format:arguments:)
NSPredicate
init(format:arguments:)
程序,将Date
实例转换为CVarArg
与Date
使用时,您可以通过将Date
实例转换为NSPredicate
来设置NSPredicate
的实例,如下所示:
let date = Date() let predicate = NSPredicate(format: "date > %@", date as CVarArg)
#5。 使用NSPredicate
init(format:argumentArray:)
初始化器和Date
实例
与Date
使用时,可以使用init(format:argumentArray:)
设置NSPredicate
的实例,如下所示:
let date = Date() let predicate = NSPredicate(format: "date > %@", argumentArray: [date])
- UIWebView日志消息iOS 7
- 如何在asynchronous块内为dispatch_group_async调度dispatch_group_wait
- iPhone应用程序的设置包
- 如何检查用户是否用iOS的FBSDKLoginKitlogin?
- iOS将音频从URL划分为帧
- 如何NSBundle pathForResource:ofType:和UIImage imageWithContentsOfFile:处理比例和设备修饰符?
- cordova插件Javascript函数从iOS 4.0.0的Native调用
- 如何使横向Xcode 5应用程序项目在横向方向上启动?
- 从iPhonelogin:文件在哪里?