Метод по умолчанию встроенного постоянного типа хранения основных данных в XCode - PullRequest
1 голос
/ 10 апреля 2019

В соответствии с типами и поведением постоянных хранилищ Apple doc встроенные постоянные типы хранилищ основных данных: 1. XML 2. Двоичные 3. SQLite 4. В памяти

Мой вопрос, среди которыхТип хранилища по умолчанию, когда мы используем базовую модель данных в xcode и как мы можем ее изменить

1 Ответ

1 голос
/ 11 апреля 2019

Ну, NSPersistentStore - это абстрактный базовый класс. Один из его четырех подклассов должен быть специально создан в коде. Таким образом, тип магазина по умолчанию не существует.

Однако, есть некоторый код шаблона, который генерируется, когда вы выбираете один из шаблонов Новый проект или Новая цель в Xcode. В текущей версии (Xcode 10), когда вы включаете флажок Использовать базовые данные , вы получаете в реализации AppDelegate свойство lazy var persistentContainer, которое предоставляет одноэлементный объект NSPersistentContainer. По умолчанию это магазин, который вы будете использовать в новой цели. Но что это за тип магазина? Что ж, постоянные хранилища NSPersistentContainer указаны в его свойстве persistentStoreDescriptions array. По умолчанию этот массив содержит одно постоянное хранилище типа SQLite, поддерживаемое файлом в папке Application Support контейнера вашего приложения. В общих чертах это тип магазина по умолчанию , о котором вы спрашивали.

Процедура изменения этого типа хранилища описана в разделе Обсуждение в документации NSPersistentContainer.persistentstoredescription .

Итак, вы видите, что default на самом деле в шаблонах проектов Xcode. Чтобы получить то, что вы хотите, вы можете поместить написанный вами код после прочтения этой документации в новый шаблон проекта и добавить его в ~/Library. Вы можете переопределить один из шаблонов проектов по умолчанию или создать свой собственный с новым именем. Базовый пример приведен в этом сообщении в блоге Джейка Крейга . Если этого вам недостаточно, Кит Харрисон опубликовал весьма тщательный реверс-инжиниринг шаблонов проектов Xcode .

...