Звучит так, как будто вы должны поддерживать свой собственный «плоский» источник данных.Возможно, сработает следующее:
Когда NSFetchedResultController
сообщает, что был вставлен новый Entity1
, вы вставляете Entity1
и связанные с ним Entity2
s, например, _flattenedArray
, так что это выглядит так:
[<Entity1>, <related Entity2>, <related Entity2>...]
Где вы их вставляете, зависит от вас - это в значительной степени сводится к:
- построению подмассива, содержащего новый
Entity1
и связанные Entity2
объекты - решают, куда в
_flattenedArray
вставить новый подмассив. - вызвать
reloadData
или каким-либо другим способом сообщить tableView
о новых данных
Когда объект Entity1
удален, удалите его и все последующие объекты Entity2
, пока не встретите конец _flattenedArray
или не столкнетесь с другим объектом Entity1
.Это предполагает, что Entity2
никогда не является объектом "верхнего уровня".Если это так, вам нужно будет удалить только эти Entity2
объекты в отношении.
Когда объект Entity1
получает или теряет объект Entity2
, вы можете сначала удалить объект Entity1
из _flattenedArray
, затем вставьте его заново.Если это слишком эффективно, вместо этого выполните слияние.