Pull to refresh

Comments 3

А скажите есть ли инструмент для создания дефолтных записей в Core Data, что бы, например, когда человек скачает мое приложение у него уже были какие-то данные?
С уверенностью ответить не могу, так как непосредственно таким вопросом не задавался. Но когда я искал информацию по теме поста, то встречал вопросы как раз примерно по такому применению нескольких хранилищ — как сделать отдельное read-only хранилище с дефолными записями, или как подгрузить набор дефолтных данных в moc, скачав с сервера файл базы данных. Так вот, никаких упоминаний об подобных инструментах я не видел, поэтому предполагаю что их нет.
Искал подобное решение, но единственное, что нашел — это стандартное «копирование базы».

Если не в курсе — объясню. Когда вы создаете NSPersistentStoreCoordinator, вы указываете путь, где будет храниться файл с данными (обычно *.sqlite, но можете использовать не SQLite-хранилище). Назовем его путем к активному хранилищу. Итак, компилируем и запускаем нашу программу, чтобы она сгенерировала файл-хранилище по активному пути. «Достаем» его, заполняем нужными данными и добавляем к проекту как ресурс — его можно будет также как любую картинку/еще что-то достать, обратившись к NSBundle (pathForResource:...). Теперь все просто. На момент запуска программы и до создания NSPersistentStoreCoordinator, просто проверяем — есть ли файл по активному пути. Если нет — то берем файл из ресурсов и складываем его в нужное место. В результате после создания файл подхватится и данные будут на месте.
К сожалению, вышеописанное породит проблему, если вы потом смените модель в CoreData. Тогда нужно будет либо соответствующе поменять файл в ресурсах, либо повторить процедуру и заново внести данные.
Sign up to leave a comment.

Articles