#core-data #swift4 #swift4.2
#core-data #swift4 #swift4.2
Вопрос:
В соответствии с типами и поведением постоянных хранилищ Apple doc, типы встроенных постоянных хранилищ основных данных: 1. XML 2. Двоичный 3. SQLite 4. В памяти
Мой вопрос в том, какой из них является типом хранилища по умолчанию, когда мы используем модель основных данных в xcode, и как мы можем его изменить
Ответ №1:
Ну, NSPersistentStore
это абстрактный базовый класс. Один из его четырех подклассов должен быть специально создан в коде. Итак, на самом деле нет типа хранилища по умолчанию.
Однако существует некоторый код шаблона, который генерируется при выборе одного из новых шаблонов проекта или новых целевых шаблонов в Xcode. В текущей версии (Xcode 10), когда вы включаете флажок Использовать основные данные, вы получаете в AppDelegate
реализации lazy var persistentContainer
свойство, которое предоставляет одноэлементный NSPersistentContainer
объект. По умолчанию это хранилище, которое вы будете использовать в новой цели. Но что это за тип хранилища? Ну, постоянные хранилища a NSPersistentContainer
указаны в его persistentStoreDescriptions
свойстве array . По умолчанию этот массив содержит одно постоянное хранилище типа SQLite, поддерживаемое файлом в Application Support
папке контейнера вашего приложения. Это, в общем, тип хранилища по умолчанию, о котором вы спрашивали.
Процедура изменения этого типа хранилища объясняется в разделе Обсуждения документации NSPersistentContainer.persistentstoredescriptions.
Итак, вы видите, что значение по умолчанию фактически находится в шаблонах проекта Xcode. Чтобы получить то, что вы хотите, вы можете поместить код, который вы написали после прочтения этой документации, в новый шаблон проекта и добавить его в свой ~/Library
. Вы можете либо переопределить один из шаблонов проекта по умолчанию, либо создать свой собственный с новым именем. Базовый пример приведен в этом сообщении в блоге Джейка Крейджа. Если вам этого недостаточно, Кит Харрисон опубликовал довольно тщательный анализ шаблонов проектов Xcode.
Комментарии:
1. Спасибо за четкое объяснение