CoreData有条件地使用NSPredicate(swift)获取NSDate

基本上我有一个名为TimeLoc的实体,它有三个属性:时间,经度和纬度。 它们的types分别是Date,Double和Double。 当我尝试使用属性时间上的filter发出请求时,我卡住了。

这是我的代码:

... var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate) var context: NSManagedObjectContext = self.managedObjectContext! var request = NSFetchRequest(entityName: "TimeLoc") var endTime = NSDate() var startTime = NSDate(timeIntervalSinceNow: -65) let predicate = NSPredicate(format: "time>= \(startTime) AND time<= \(endTime)") request.predicate = predicate var results: NSArray = context.executeFetchRequest(request, error: nil)! ... 

我得到了以下错误:“无法parsing格式string”时间> = 2015-07-14 03:24:03 +0000 AND时间<= 2015-07-14 03:25:08 +0000“'

我应该如何解决这个问题? 我GOOGLE了一下,但所有的解决scheme,我发现在Objective-C。 如果有人可以在Swift中回答我,那将会很棒。

编辑:作为V-Xtremebuild议,在这个问题的答案可以findGlauco Neves的答案

我想你是以NSDate格式发送参数给谓词:

 let predicate = NSPredicate(format: "time>= \(startTime) AND time<= \(endTime)") 

这里你的startTime和endTime是NSDatetypes的。 尝试将其转换为string格式并将其传递给谓词。 它应该工作。

参考: NSPredicate:按NSDate属性过滤对象