NSAtomicStore
NSAtomicStore
абстрактный суперкласс, который можно разделить на подклассы для создания Базовых Данных атомарное хранилище. Это обеспечивает реализации по умолчанию некоторых служебных методов. Вы используете пользовательское атомарное хранилище, если у Вас есть пользовательский формат файла, который Вы хотите интегрировать с Базовым Применением данных.
Атомарные хранилища все предназначаются для обработки наборов данных, которые могут быть выражены в памяти. Атомарное хранилище API одобряет простоту по производительности.
Разделение на подклассы примечаний
Методы для переопределения
В подклассе NSAtomicStore
, необходимо переопределить следующие методы для обеспечения поведения, подходящего для хранилища:
Это в дополнение к методам, из которых необходимо переопределить для подкласса NSPersistentStore
:
Оператор импорта
Swift
import CoreData
Objective C
@import CoreData;
Доступность
Доступный в OS X v10.5 и позже.
-
init (persistentStoreCoordinator:configurationName:URL:options:) - initWithPersistentStoreCoordinator:configurationName:URL:options:
Возвращает атомарное хранилище, инициализированное с данными параметрами.
Объявление
Swift
init(persistentStoreCoordinator
coordinator
: NSPersistentStoreCoordinator?, configurationNameconfigurationName
: String?, URLurl
: NSURL, optionsoptions
: [NSObject : AnyObject]?)Objective C
- (instancetype)initWithPersistentStoreCoordinator:(NSPersistentStoreCoordinator *)
coordinator
configurationName:(NSString *)configurationName
URL:(NSURL *)url
options:(NSDictionary *)options
Параметры
coordinator
Персистентный координатор хранилища.
configurationName
Имя конфигурации модели управляемого объекта для использования.
url
URL хранилища для загрузки. Это значение не должно быть
nil
.options
Словарь, содержащий параметры конфигурации.
Возвращаемое значение
Атомарное хранилище, инициализированное с данными параметрами, или
nil
если не могло бы быть инициализировано хранилище.Обсуждение
Вы обычно не вызываете этот метод сами; это вызывается персистентным координатором хранилища во время
addPersistentStoreWithType:configuration:URL:options:error:
, когда существующее хранилище открыто, и когда новое хранилище создается и.В Вашей реализации необходимо проверить, существует ли файл уже в
url
; если это не делает, то необходимо или создать файл здесь или гарантировать что Вашload:
если файл не существует, метод не перестал работать.Любой подкласс
NSAtomicStore
должен быть в состоянии обработать быть инициализированным с URL, указывающим на файл нулевой длины. Это служит индикатором, что новое хранилище должно быть создано в указанном расположении и позволяет Вам надежно создавать файлы резервирования в известных расположениях, которые могут тогда быть переданы Базовым Данным для построения хранилищ. Можно принять решение создать файлы резервирования нулевой длины во времяinitWithPersistentStoreCoordinator:configurationName:URL:options:
илиload:
. Если Вы делаете так, необходимо удалить файл резервирования, если хранилище удалено от координатора, прежде чем это будет сохранено.Необходимо гарантировать, чтобы Вы загрузили метаданные во время инициализации и установили его использование
setMetadata:
.Специальные замечания
Необходимо вызвать
super
реализация, чтобы гарантировать, что правильно инициализируется хранилище.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Загружает узлы кэша для получателя.
Объявление
Swift
func load(_
error
: NSErrorPointer) -> BoolObjective C
- (BOOL)load:(NSError **)
error
Параметры
error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
YES
true
если узлы кэша были загружены правильно, иначеNO
false
.Обсуждение
Вы переопределяете этот метод к загрузить данные из URL, указанного в
initWithPersistentStoreCoordinator:configurationName:URL:options:
и создайте узлы кэша для представленных объектов. Необходимо уважать конфигурацию, указанную за хранилище, а также опции.Любой подкласс
NSAtomicStore
должен быть в состоянии обработать быть инициализированным с URL, указывающим на файл нулевой длины. Это служит индикатором, что новое хранилище должно быть создано в указанном расположении и позволяет Вам надежно создавать файлы резервирования в известных расположениях, которые могут тогда быть переданы Базовым Данным для построения хранилищ. Можно принять решение создать файлы резервирования нулевой длины во времяinitWithPersistentStoreCoordinator:configurationName:URL:options:
илиload:
. Если Вы делаете так, необходимо удалить файл резервирования, если хранилище удалено от координатора, прежде чем это будет сохранено.Специальные замечания
Необходимо переопределить этот метод.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Возвращает управляемый объект ID из справочных данных для указанного объекта.
Объявление
Swift
func objectIDForEntity(_
entity
: NSEntityDescription, referenceObjectdata
: AnyObject) -> NSManagedObjectIDObjective C
- (NSManagedObjectID *)objectIDForEntity:(NSEntityDescription *)
entity
referenceObject:(id)data
Параметры
entity
Объект описания объекта.
data
Справочные данные, для которых управляемый объект требуется ID.
Возвращаемое значение
Управляемый объект ID от справочных данных для указанного объекта
Обсуждение
Вы используете этот метод для создания управляемого объекта IDs, тогда использующийся для создания узлов кэша для получения информации, загружаемой в хранилище.
Специальные замечания
Вы не должны переопределять этот метод.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Регистры ряд узлов кэша с получателем.
Объявление
Swift
func addCacheNodes(_
cacheNodes
: NSSet)Objective C
- (void)addCacheNodes:(NSSet *)
cacheNodes
Параметры
cacheNodes
Ряд узлов кэша.
Обсуждение
Необходимо вызвать этот метод в подклассе во время вызова к
load:
зарегистрировать загруженную информацию в хранилище.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает новый узел кэша для данного управляемого объекта.
Объявление
Swift
func newCacheNodeForManagedObject(_
managedObject
: NSManagedObject) -> NSAtomicStoreCacheNodeObjective C
- (NSAtomicStoreCacheNode *)newCacheNodeForManagedObject:(NSManagedObject *)
managedObject
Параметры
managedObject
Управляемый объект.
Возвращаемое значение
Новый узел кэша для
managedObject
.Обсуждение
Этот метод вызывается платформой во время работы сохранения, один раз для каждого недавно вставленного управляемого объекта. Это должно вытянуть информацию от управляемого объекта и возвратить узел кэша, содержащий информацию (узел будет зарегистрирован платформой).
Специальные замечания
Необходимо переопределить этот метод.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает новый ссылочный объект для данного управляемого объекта.
Объявление
Swift
func newReferenceObjectForManagedObject(_
managedObject
: NSManagedObject) -> AnyObjectObjective C
- (id)newReferenceObjectForManagedObject:(NSManagedObject *)
managedObject
Параметры
managedObject
Управляемый объект. В то время, когда этот метод вызывают, он имеет временный ID.
Возвращаемое значение
Новый ссылочный объект для
managedObject
.Обсуждение
Этот метод вызывается платформой после работы сохранения на контексте управляемого объекта, один раз для каждого недавно вставленного управляемого объекта. Значение возвратилось, используется для создания постоянного ID для объекта и должен быть уникальным для экземпляра в иерархии наследования его объекта (в этом хранилище).
Специальные замечания
Необходимо переопределить этот метод.
Этот метод должен возвратить стабильное (неизменное) значение для данного объекта, иначе Сохранить Как, и миграция не будет работать правильно. Это означает, что можно использовать произвольные числа, UUIDs или другие случайные значения, только если они сохраняются с необработанными данными. Если Вы не можете сохранить первоначально присвоенный ссылочный объект с данными, то метод должен получить ссылочный объект из значений управляемого объекта. Для получения дополнительной информации посмотрите, что Атомарное Хранилище Программирует Темы.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Обновляет данный узел кэша с помощью значений в данном управляемом объекте.
Объявление
Swift
func updateCacheNode(_
node
: NSAtomicStoreCacheNode, fromManagedObjectmanagedObject
: NSManagedObject)Objective C
- (void)updateCacheNode:(NSAtomicStoreCacheNode *)
node
fromManagedObject:(NSManagedObject *)managedObject
Параметры
node
Узел кэша для обновления.
managedObject
Управляемый объект, с которым можно обновить
node
.Обсуждение
Этот метод вызывается платформой после работы сохранения на контексте управляемого объекта, один раз для каждого обновленного
NSManagedObject
экземпляр.Вы переопределяете этот метод в подклассе для взятия информации от
managedObject
и обновлениеnode
.Специальные замечания
Необходимо переопределить этот метод.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Метод, вызванный перед хранилищем, удаляет данный набор узлов кэша.
Объявление
Swift
func willRemoveCacheNodes(_
cacheNodes
: NSSet)Objective C
- (void)willRemoveCacheNodes:(NSSet *)
cacheNodes
Параметры
cacheNodes
Набор узлов кэша для удаления.
Обсуждение
Этот метод вызывается хранилищем перед вызовом к
save:
с набором узлов кэша, отмеченных, как удалено контекстом управляемого объекта. Можно переопределить этот метод для отслеживания узлов, которые не будут сделаны персистентными вsave:
метод.Вы не должны вызывать этот метод непосредственно в подклассе.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
См. также
-
Сохраняет узлы кэша.
Объявление
Swift
func save(_
error
: NSErrorPointer) -> BoolObjective C
- (BOOL)save:(NSError **)
error
Параметры
error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Обсуждение
Вы переопределяете этот метод для создания персистентным необходимая информация от узлов кэша до URL указанный для получателя.
Специальные замечания
Необходимо переопределить этот метод.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает набор узлов кэша, зарегистрированных в получателе.
Возвращаемое значение
Набор узлов кэша зарегистрировался в получателе.
Обсуждение
Необходимо изменить это использование набора
addCacheNodes:
: иwillRemoveCacheNodes:
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает узел кэша для данного управляемого объекта ID.
Объявление
Swift
func cacheNodeForObjectID(_
objectID
: NSManagedObjectID) -> NSAtomicStoreCacheNode?Objective C
- (NSAtomicStoreCacheNode *)cacheNodeForObjectID:(NSManagedObjectID *)
objectID
Параметры
objectID
Управляемый объект ID.
Возвращаемое значение
Узел кэша для
objectID
.Обсуждение
Этот метод обычно используется узлами кэша для определения местоположения связанных узлов кэша (отношениями).
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает ссылочный объект для данного управляемого объекта ID.
Объявление
Swift
func referenceObjectForObjectID(_
objectID
: NSManagedObjectID) -> AnyObjectObjective C
- (id)referenceObjectForObjectID:(NSManagedObjectID *)
objectID
Параметры
objectID
Управляемый объект ID.
Возвращаемое значение
Ссылочный объект для
objectID
.Обсуждение
Если данные должны быть сделаны персистентными, подклассы должны вызвать этот метод для извлечения справочных данных из идентификатора объекта для каждого узла кэша.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.5 и позже.
-
Возвращает метаданные для получателя.
Объявление
Objective C
- (NSDictionary *)metadata
Возвращаемое значение
Метаданные для получателя.
Обсуждение
NSAtomicStore
обеспечивает словарь по умолчанию метаданных. Этот словарь содержит тип хранилища и идентификатор (NSStoreTypeKey
иNSStoreUUIDKey
) а также храните информацию управления версиями. Подклассы должны гарантировать, что метаданные сохраняются вместе с данными хранилища.См. также
metadata
(NSPersistentStore
) -
Устанавливает метаданные для получателя.
Объявление
Objective C
- (void)setMetadata:(NSDictionary *)
storeMetadata
Параметры
storeMetadata
Метаданные для получателя.
См. также