Базовые данные: наблюдение за всеми изменениями на объекте определенного типа
Я хотел бы получать уведомления, когда объект определенного типа добавляется / изменяется / удаляется. Я знаю, что это возможно, добавив наблюдателя к managedObjectContext
, но затем я должен искать три набора, которые возвращаются, чтобы увидеть, содержат ли они объект этого типа. Я мог бы использовать filteredSetUsingPredicate
, но кажется неэффективным выполнять операцию O(n) три раза каждый раз, когда происходит изменение. Есть ли еще более эффективный способ сделать это?
1 ответ
Это кажется неэффективным? На основании каких испытаний и наблюдений? Как вы думаете, NSArrayController работает (подсказка - прочитайте о привязках какао)?:-) Конечно, с типом хранилища SQLite вы получаете фильтрацию в базе данных для выборок, но как насчет изменений в памяти объектов?
Если бы я был на вашем месте, я бы подключил его и проверил бы его на работоспособность, которая, по моему мнению, является разумным сценарием наихудшего случая, с которым может столкнуться реальный пользователь.
Если вы обнаружите, что производительности действительно не хватает, лучше всего опубликовать отдельный вопрос, описывающий вашу модель данных, причины, по которым вам необходимо наблюдать за всеми изменениями во всех экземплярах данного объекта, и где Instruments сообщает, что происходит снижение производительности.