Атомарные основные принципы хранилища

Эта статья описывает фундаментальные понятия что underly атомарное хранилище.

Введение

Базовые Данные обеспечивают четыре собственных типа персистентного хранилища:

Эти хранят, вводит каждое предложение различные преимущества и компромиссы, и описаны в Персистентных Функциях Хранилища. Двоичный файл и хранилища XML являются "атомарными” хранилищами — они должны быть считаны и записаны в их полноте, в отличие от хранилища SQLite, которое может быть изменено по частям, одна запись за один раз, если Вы желаете.

Базовые Данные управляют всем взаимодействием с этими хранилищами, переводя вставки, удаления и обновления управляемого объекта в, от, и в, контекст управляемого объекта. Базовые Данные также управляют форматами файлов.

Атомарное хранилище API позволяет Вам создавать пользовательский формат хранилища для своих данных и взаимодействовать с данными с помощью стандартных Базовых Данных APIs. Это поочередно позволяет Вам эффективно использовать Базовые Данные в своем приложении, но использовать или существующее — возможно, наследство — формат файла, или определить новый формат файла, который может использоваться внешними приложениями, не использующими Базовые Данные. Например, Вы могли бы создать «универсальный» тип хранилища такой что касается HTML или разделенных от запятой значений или некоторого другого посреднического типа для интеграции с третьим лицом. Это важно, хотя отметить, что атомарное хранилище API не предоставляет поддержку для интеграции с реляционными базами данных клиент-сервер или подобными основанными на SQL хранилищами.

При реализации пользовательского типа хранилища он обычно связывается к определенной модели управляемого объекта, описывающей схему, закодированную в хранилище.

Атомарные классы хранилища

Существует три класса, которые Вы используете при реализации пользовательского хранилища:

Из них единственный, который необходимо разделить на подклассы, NSAtomicStore. Это - абстрактный суперкласс для Вас для разделения на подклассы для создания атомарных хранилищ. Это обеспечивает реализации по умолчанию некоторых служебных методов. Вы не можете непосредственно разделить на подклассы NSPersistentStore. Можно разделить на подклассы NSAtomicStoreCacheNode обеспечить специализированное поведение при необходимости.

Требования реализации

NSAtomicStore подкласс NSPersistentStore. Оба класса требуют, чтобы Вы реализовали различные методы.

В подклассе NSPersistentStore, необходимо переопределить следующие методы:

ввестиСтрока типа получателя. (только для чтения)
идентификаторУникальный идентификатор для получателя.
метаданныеМетаданные для получателя.
metadataForPersistentStoreWithURL:error:Возвращает метаданные из персистентного хранилища в данном URL.

В подклассе NSAtomicStore, необходимо переопределить следующие методы:

загрузка:Загружает узлы кэша для получателя.
newCacheNodeForManagedObject:Возвращает новый узел кэша для данного управляемого объекта.
newReferenceObjectForManagedObject:Возвращает новый ссылочный объект для данного управляемого объекта.
сохраните:Сохраняет узлы кэша.
updateCacheNode:fromManagedObject:Обновляет данный узел кэша с помощью значений в данном управляемом объекте.