ОбзорIOS - основные данные - UITableView - обновление расчетное значение - NSFetchedResultsController
У меня есть проект IOS с использованием основных данных (
NSFetchedResultsController
) и вид таблицы. У меня есть поле под названием «joingDate».У меня есть набор меток на ячейке представления таблицы для представления данных.
Если joiningDate сегодня/завтра, то я бы хотел отображать как «сегодня» или «завтра» вместо указания фактической даты.
Я просто думал, что я бы проверял lastCheckedDate (в последний раз, когда дата была проверена), и если бы это произошло в течение дня, мне пришлось бы обновлять все эти метки в строках, которые имеют дату присоединения и "сегодня или завтра".
В базе данных «JoiningDate» будет храниться как дата, только метка должна отображать «сегодня»/«завтра»/дату в определенном формате.
Я реализовал следующий метод, в котором метка «joingDateComments» обновляется на основе текущей даты.
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
Вопрос
Примечание - Я использую NSFetchedResultsController
- , что это лучший подход, чтобы обновить все те строки, ярлыки, которые имеют
joiningDate
как сегодня/завтра? - Должен ли я перезагружать все записи в таблице? (но это повлияет только на несколько строк.)
- Должен ли я прокручивать все индексы и проверять и обновлять. Я не уверен, что это сработает, потому что я использую
NSFetchedResultsController
. - Должен ли я использовать временные данные, чтобы я мог просто запросить базу данных и получить записи, имеющие «JoingDate», как сегодня/завтра, и обновить поле переходных процессов
JoingDateComments
, чтобы эти записи автоматически обновлялись NSFetchedResultsController
Ответ:
Pls пройти через комментарии Эндрю.
спасибо, Андрей, что вы сказали, имеет смысл. Единственная проблема, с которой я столкнулся, заключалась в том, что «joiningDate» хранится в базе данных, и когда я хочу отобразить ячейку, я проверяю, есть ли она вчера/сегодня/завтра и предоставляет соответствующие комментарии, но текущая дата продолжает меняться и в какой-то момент, его необходимо обновить. Теперь я занимаюсь домашним заданием, чтобы проверить записи, которые необходимо обновить, обратившись к базе данных, когда приложение запустится/появится на этом экране с другого экрана. У меня есть отдельное поле в базе данных для представления типа даты (сегодня/завтра/вчера) – user1046037
user1046037, опять же это не имеет ничего общего с Core Data. Он имеет все, что связано с поиском видимых ячеек таблицы и обновлением указателя дня. Почему вы сохраняете формат вашей строки даты, сегодня/завтра/вчера, в своей модели? Сравнение с NSDate.date - это все, что вам нужно. Вы знаете, MVC и все такое ... Я думаю, что вы делаете эту проблему сложнее, чем нужно. BTW, iOS отправит вам уведомление, когда произойдёт значительное изменение времени. Вы можете использовать это, чтобы инициировать обновление своего пользовательского интерфейса. Andrew – adonoho
спасибо Andrew, Если я не храню в базе данных, как бы я узнал, какие ячейки отображаются неверной строкой. Если вы не храните его в базе данных, я должен выполнить полную перезагрузку всех данных. Итак, теперь я храню записи, которые имеют ярлык как «вчера»/«сегодня»/«завтра», поэтому я могу их запросить и обновить, когда день прошел вместе с записями, которые находятся между вчерашним днем и днем послезавтра. Что касается уведомлений. Каждое приложение имеет только 64 слота и, в большинстве случаев, достигает предела, поэтому я не хочу использовать уведомление. – user1046037