DevPrep

Все темы › Базы данных и хранилища

Что такое faulting и ленивая загрузка в Core Data?

Middle PRO

Суть

Fault — объект-заглушка: NSManagedObject, у которого известен objectID и тип, но свойства ещё не загружены из хранилища. Fetch возвращает именно фолты (если не выставлен returnsObjectsAsFaults = false), а при первом обращении к атрибуту фолт «срабатывает» (fires): Core Data делает запрос к store (или берёт данные из row cache координатора) и заполняет объект. Связи тоже представлены фолтами: to-one — фолт на объект, to-many — фолт на Set.

Это и есть ленивая загрузка в Core Data: память расходуется только на то, к чему реально обратились.

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store