我被困在我的核心數據模型的問題和涉及日期的提取請求。如何使用NSPredicate使用今天的NSDate獲取對象?
我在具有NSDate屬性的實體中有一些對象; 我需要今天的日期來提取對象,但我總是從這個代碼獲得零:
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年2月28日22時02分01秒+0000
但我想獲取只有相同日期的對象,忽略小時,分鐘和秒。我需要做什麼?
我也試圖創建另一個的NSDate使用組件:
let components = cal.components([.Day , .Month, .Year ], fromDate: today)
let newDate = cal.dateFromComponents(components)
但結果是一樣的。我究竟做錯了什麼?
由於此代碼不處理秒,納秒和它可能在邊緣情況下失敗的時代。此類方法更自然的地方是NSDate的擴展,而不是輔助類。 – vikingosegundo
這兩個優點 - 如果你有改進,讓自由! – sschale