【发布时间】:2016-02-28 22:12:54
【问题描述】:
我的核心数据模型和涉及日期的获取请求遇到问题。
我在具有 NSDate 属性的实体中有一些对象; 我需要提取今天日期的对象,但我总是从这段代码中得到 nil:
public func getObjectsOfToday() -> Array<myObject>?
{
let entityDescription = NSEntityDescription.entityForName("Objects", inManagedObjectContext: DataAccess.sharedInstance.managedObjectContext)
let request = NSFetchRequest()
request.entity = entityDescription
request.returnsObjectsAsFaults = false
let today = NSDate()
request.predicate = NSPredicate(format: "(dateStart => %@) AND (dateStart <= %@)", today, today)
var objects: [AnyObject]?
do
{
objects = try DataAccess.sharedInstance.managedObjectContext.executeFetchRequest(request)
}
catch let error as NSError
{
print(error)
objects = nil
}
return objects as? Array<Objects>
}
我认为是 NSPredicate 的问题,因为它还考虑了小时、分钟和秒。如果我今天打印是这样的:
今日打印说明:2016-02-28 22:02:01 +0000
但是我想获取具有相同日期的对象,忽略小时、分钟和秒。我需要做什么?
我还尝试使用组件创建另一个 NSDate:
let components = cal.components([.Day , .Month, .Year ], fromDate: today)
let newDate = cal.dateFromComponents(components)
但结果是一样的。我做错了什么?
【问题讨论】:
标签: ios swift core-data nsdate nspredicate