В качестве части моего решения синхронизации я использую sync status
для всех объектов определенного класса. Всякий раз, когда изменяются определенные (не все) атрибуты этого объекта, я хочу обновить статус.Обновление флага при изменении атрибута
Я рассматриваю четыре подхода:
- установки статуса в коде вручную, куда бы я изменить то, что нужно, чтобы синхронизироваться. Это наиболее очевидно, но также и самый трудоемкий и подверженный ошибкам (мне нужно будет также помнить о том, чтобы обновлять статус синхронизации каждый раз, когда добавляю новые функции).
- Отслеживайте его с помощью уведомления о сердечнике (например,
willSave
илиNSManagedObjectContextObjectsDidChangeNotification
). Это кажется наиболее подходящим на первый взгляд - Я просто подписываюсь на уведомления в своем AppDelegate и обновляю статус . Но можно ли просмотреть изменения и обновить статус синхронизации только тогда, когда меня интересует атрибут ? Кроме того, не будет установлено , а такжеsync_status
также вызывает это уведомление, ведущее меня в бесконечный цикл? Как я могу это ответить? - Пользовательские сеттеры по атрибутам, которые меня волнуют. У меня было проблема с попыткой получить эту работу до этого, и в итоге решил , чтобы попытаться оставить стандартные базовые данные для получения/установки. Но я, , вернусь, если он лучше всего подходит.
- KVO. Я раньше не использовал этот шаблон, но может быть проще всего просто зарегистрируйтесь для уведомлений об изменениях атрибутов для тех, кого интересует и установите там флаг. Но где я могу это сделать? Мне нужно, чтобы контролировал каждый объект класса, так можно было бы начать наблюдать за уведомлениями KVO атрибутов в том же объекте ? I.e., всякий раз, когда создается объект, сразу же тот же объект слушает изменения атрибута А и устанавливает его собственный
sync_status
когда он срабатывает?
Какой из этих подходов будет служить мне лучше всего? Возможно, мне не хватает других идей?
еще один пример будет протоколом для уведомления получателя о любых изменениях. Вы можете использовать словарь для передачи соответствующих данных? – katzenhut