2017-01-07 44 views
0

我正在嘗試創建一個填充選定日期(特別是yesterdaytodaytomorrow)的對象的UITableView。在我的CoreData模型中,作爲屬性date with type日期的有問題的實體。如何將FetchedResultsController限制爲給定日期中的對象

要獲得yesterdaytodaytomorrow我這樣做(如this WWDC session規定):

var today = Date() 
var yesterday = calendar.date(byAdding: .day, value: -1, to: self.date) 
var tomorrow = calendar.date(byAdding: .day, value: 1, to: self.date) 

,並執行:

today = calendar.startOfDay(for: today) 
yesterday = calendar.startOfDay(for: yesterday) 
tomorrow = calendar.startOfDay(for: tomorrow) 

一旦我得到的所有日期的,我不不知道該怎麼做。目前我獲取結果控制器的樣子:

lazy var fetchedResultsController: NSFetchedResultsController<Entry> = { 

     let fetchRequest: NSFetchRequest<Entry> = Entry.fetchRequest() 

     // Configure Fetch Request 
     fetchRequest.sortDescriptors = [NSSortDescriptor(key: "name", ascending: true)] 

     // Create Fetched Results Controller 
     let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: app_delegate.persistentContainer.viewContext, sectionNameKeyPath: nil, cacheName: nil) 

     // Configure Fetched Results Controller 
     fetchedResultsController.delegate = self 

     return fetchedResultsController 
}() 

如何限制fetchedResultsController這些日期之一,如果可能,我做我使用Calendar S分析它:isDateInToday()

+0

您會希望在提取請求上使用謂詞('NSPredicate'),但具體取決於您希望如何使用這些日期。從昨天到明天?從昨天到今天? –

+0

這將是三個獨立的視圖控制器,每個分別代表昨天,今天和昨天的所有條目。 – jjatie

回答

0

將謂詞添加到獲取請求中。

request.predicate = NSPredicate(format: "date > %@ && date < %@", 
    today as NSDate, tomorrow as NSDate) 
+0

我得到的錯誤是我的兩個日期(都是Date類型的)不符合'CVarArg',但是當我查看文檔時,'Date'和'NSDate'都符合它。思考? – jjatie

+0

只需投射到'NSDate'。 – Mundi

+0

謝謝,好奇'日期'不起作用 – jjatie

相關問題