w Я использую три контроллера выборки для фильтрации трех списков задач; сегодняшние, завтрашние и, наконец, более поздние задачи. В этом случае у меня есть три предиката:iOS - обновление NSFetchedResultsController
NSPredicate *todayPredicate = [NSPredicate predicateWithFormat:@"(date <= %@) AND isDone == 0",
[self getEndDateForDay:P_Section_Today]];
NSPredicate *tomorrowPredicate = [NSPredicate predicateWithFormat:@"((date >= %@) AND (date <= %@)) AND isDone == 0",
[self getStartDateForDay:P_Section_Tomorrow],
[self getEndDateForDay:P_Section_Tomorrow]];
NSPredicate *laterPredicate = [NSPredicate predicateWithFormat:@"date >= %@ AND isDone == 0",
[self getStartDateForDay:P_Section_Later]];
Я был доволен этим. Оно работало завораживающе. Пока, в течение ночи, я столкнулся со следующей проблемой. Три контроллера не обновляют себя.
Пример: - Запуск приложения в воскресенье. (Сегодня, сегодня воскресенье). - Приложение все еще работает. - Открыл приложение в понедельник утром. - Добавлена новая задача в понедельник. Он появится в сегодняшней задаче, верно? Нет !, он появляется в задачах Завтра. Исправить это не удастся, кроме как закрыть приложение из фона и снова запустить его.
Я думал, что performFetch
обновляет контроллер выборки вместе со своим предикатом, но это не так. Есть ли исправление для этого?
Итак, мне нужно отслеживать изменения даты, как каждую секунду? –
@ShatouDev Ну, не обязательно, например, вы могли бы сохранить текущую дату при создании предикатов, а затем всегда проверять, изменилась ли дата при возобновлении приложения из сна или фона. И если вам нужно обновить вживую, когда пользователь активно использует приложение в полночь, вы можете установить таймер для выхода в полночь, а не для активного опроса даты. (Также подумайте о том, как вы хотите, чтобы пользовательский интерфейс вел себя, может быть, не будет хорошо автоматически обновлять, если пользователь что-то делает ... возможно, есть какое-то действие, которое вы можете связать с проверкой даты?) – Arkku
Лично я просто проверю дата активации приложения из фона/сна и когда пользователь делает что-либо, что вызывает обновление, в любом случае (например, создает/удаляет/редактирует задачу). – Arkku