2017-01-07 2 views
0

Я пытаюсь создать UITableView, который заполняется объектами на выбранную дату (в частности, yesterday, today и tomorrow). В моей модели CoreData объект, о котором идет речь, является свойством date with type Date`.Как ограничить FetchedResultsController объектам в данный день

Чтобы получить yesterday, today и tomorrow я делаю это (как это предписано 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 сек метода: 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

Спасибо, любопытно, что 'Date' не работает – jjatie

Смежные вопросы