NSIncrementalStore
NSIncrementalStore
абстрактный суперкласс, определяющий API, через который Базовые Данные связываются с хранилищем. Этот интерфейс разработан, чтобы позволить Вам создавать персистентные хранилища, загружающие и сохраняющие данные инкрементно, допуская управление большими и/или совместно используемыми наборами данных. См. Инкрементное Руководство по программированию Хранилища для стратегии реализации и методов наиболее успешной практики при реализации собственного инкрементного хранилища.
Разделение на подклассы примечаний
Методы для переопределения
В подклассе NSIncrementalStore
, необходимо переопределить следующие методы для обеспечения поведения, подходящего для хранилища:
Нет никакой потребности переопределить методы, из которых необходимо иначе переопределить для подкласса NSPersistentStore
.
Наследование
-
NSObject
-
NSPersistentStore
-
NSIncrementalStore
-
NSObject
-
NSPersistentStore
-
NSIncrementalStore
Оператор импорта
Swift
import CoreData
Objective C
@import CoreData;
Доступность
Доступный в OS X v10.7 и позже.
-
Загружает метаданные для хранилища.
Объявление
Swift
func loadMetadata(_
error
: NSErrorPointer) -> BoolObjective C
- (BOOL)loadMetadata:(NSError **)
error
Параметры
error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
YES
true
если метаданные были правильно загружены, иначеNO
false
.Обсуждение
В Вашей реализации этого метода необходимо проверить это, URL, используемый для создания хранилища, применим (расположение существует и, если необходимо перезаписываемо, схема совместима, и т.д.), и возвратите ошибку, если существует проблема.
Любой подкласс
NSIncrementalStore
то, которое основано на файле, должно быть в состоянии обработать быть инициализированным с URL, указывающим на файл нулевой длины. Это служит индикатором, что новое хранилище должно быть создано в указанном расположении и позволяет приложения с помощью хранилища для безопасного создания файлов резервирования в известных расположениях.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
Если запрос не может быть завершен, возвращает значение как подходящее для данного запроса, или ноля.
Объявление
Swift
func executeRequest(_
request
: NSPersistentStoreRequest, withContextcontext
: NSManagedObjectContext, errorerror
: NSErrorPointer) -> AnyObject?Objective C
- (id)executeRequest:(NSPersistentStoreRequest *)
request
withContext:(NSManagedObjectContext *)context
error:(NSError **)error
Параметры
request
Запрос выборки.
context
Контекст управляемого объекта раньше выполнялся
request
.error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
Значение как подходящее для
request
, илиnil
если не может быть завершен запросОбсуждение
Значение для возврата зависит от типа результата (см.
resultType
) изrequest
:Если это
NSManagedObjectResultType
,NSManagedObjectIDResultType
, илиNSDictionaryResultType
, метод должен возвратить массив, содержащий все объекты в хранилище, соответствующем запрос.Если это
NSCountResultType
, метод должен возвратить массив, содержащийNSNumber
чье значение является количеством всех объектов в хранилище, соответствующем запрос.Если запрос является запросом сохранения, метод должен возвратить пустой массив.
Если запрос сохранения содержит нулевые значения для вставленных/обновленных/удаленных/заблокированных наборов; необходимо обработать его как запрос для сохранения метаданных хранилища.
Необходимо реализовать этот метод консервативно и ожидать, что неизвестные типы запроса могут в некоторый момент быть переданы методу. Корректное поведение в этих случаях состоит в том, чтобы возвратиться
nil
и ошибка.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает инкрементный узел хранилища, инкапсулирующий персистентные внешние значения объекта с данным идентификатором объекта.
Объявление
Swift
func newValuesForObjectWithID(_
objectID
: NSManagedObjectID, withContextcontext
: NSManagedObjectContext, errorerror
: NSErrorPointer) -> NSIncrementalStoreNode?Objective C
- (NSIncrementalStoreNode *)newValuesForObjectWithID:(NSManagedObjectID *)
objectID
withContext:(NSManagedObjectContext *)context
error:(NSError **)error
Параметры
objectID
ID объекта, на который требуют значения.
context
Контекст управляемого объекта, в который будут возвращены значения.
error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
Инкрементный узел хранилища, инкапсулирующий персистентные внешние значения объекта с идентификатором объекта
objectID
, илиnil
если не может быть найден соответствующий объект.Обсуждение
Возвращенный узел должен включать все значения атрибутов и может включать в - значения отношения как экземпляры
NSManagedObjectID
.Если объект с идентификатором объекта
objectID
не может быть найден, метод должен возвратитьсяnil
и — еслиerror
неNULL
— создайте и возвратите надлежащий ошибочный объект вerror
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
newValueForRelationship (_: forObjectWithID:withContext:error:) - newValueForRelationship:forObjectWithID:withContext:error:
Возвращает отношение для данного отношения объекта с данным идентификатором объекта.
Объявление
Swift
func newValueForRelationship(_
relationship
: NSRelationshipDescription, forObjectWithIDobjectID
: NSManagedObjectID, withContextcontext
: NSManagedObjectContext?, errorerror
: NSErrorPointer) -> AnyObject?Objective C
- (id)newValueForRelationship:(NSRelationshipDescription *)
relationship
forObjectWithID:(NSManagedObjectID *)objectID
withContext:(NSManagedObjectContext *)context
error:(NSError **)error
Параметры
relationship
Отношение, на которое требуют значения.
objectID
ID объекта, на который требуют значения.
context
Контекст управляемого объекта, в который будут возвращены значения.
error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
Значение отношения указано
relationship
из объекта с идентификатором объектаobjectID
, илиnil
если происходит ошибка.Обсуждение
Если отношение к - один, метод должен возвратиться
NSManagedObjectID
экземпляр, идентифицирующий место назначения или экземплярNSNull
если значение отношенияnil
.Если отношение к - многие, метод должен возвратить объект коллекции, содержащий
NSManagedObjectID
экземпляры для идентификации связанных объектов. ИспользуяNSArray
экземпляр предпочтен, потому что это будет самым эффективным. Хранилище может также возвратить экземплярNSSet
илиNSOrderedSet
; экземплярNSDictionary
не приемлемо.Если объект с идентификатором объекта
objectID
не может быть найден, метод должен возвратитьсяnil
и — еслиerror
неNULL
— создайте и возвратите надлежащий ошибочный объект вerror
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает массив, содержащий идентификаторы объектов для данного массива недавно-вставленных-объектов.
Объявление
Swift
func obtainPermanentIDsForObjects(_
array
: [AnyObject], errorerror
: NSErrorPointer) -> [AnyObject]?Параметры
array
Массив недавно-вставленных-объектов.
error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
Массив, содержащий идентификаторы объектов для объектов в
array
.Возвращенный массив должен возвратить идентификаторы объектов в том же порядке, как объекты появляются в
array
.Обсуждение
Этот метод вызывают прежде
executeRequest:withContext:error:
с запросом сохранения, для присвоения постоянного IDs недавно-вставленным-объектам.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает идентификатор для хранилища в данном URL.
Объявление
Swift
class func identifierForNewStoreAtURL(_
storeURL
: NSURL) -> AnyObjectObjective C
+ (id)identifierForNewStoreAtURL:(NSURL *)
storeURL
Параметры
storeURL
URL персистентного хранилища.
Возвращаемое значение
Идентификатор для хранилища в
storeURL
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
Указывает, что объекты, идентифицированные данным массивом идентификаторов объектов, используются в контексте управляемого объекта.
Объявление
Swift
func managedObjectContextDidRegisterObjectsWithIDs(_
objectIDs
: [AnyObject])Objective C
- (void)managedObjectContextDidRegisterObjectsWithIDs:(NSArray *)
objectIDs
Параметры
objectIDs
Массив идентификаторов объектов.
Обсуждение
Этот метод и
managedObjectContextDidUnregisterObjectsWithIDs:
позвольте контекстам управляемого объекта передавать интерес к данным строки конкретных объектов способом, сродни подсчету ссылок. Для получения дополнительной информации посмотритеmanagedObjectContextDidUnregisterObjectsWithIDs:
.Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
managedObjectContextDidUnregisterObjectsWithIDs (_:) - managedObjectContextDidUnregisterObjectsWithIDs:
Указывает, что объекты, идентифицированные данным массивом идентификаторов объектов, больше не используются контекстом управляемого объекта.
Объявление
Swift
func managedObjectContextDidUnregisterObjectsWithIDs(_
objectIDs
: [AnyObject])Objective C
- (void)managedObjectContextDidUnregisterObjectsWithIDs:(NSArray *)
objectIDs
Параметры
objectIDs
Массив идентификаторов объектов.
Обсуждение
Этот метод является дубликатом к
managedObjectContextDidRegisterObjectsWithIDs:
.Передача идентификатора объекта в массиве идентификаторов объектов
managedObjectContextDidRegisterObjectsWithIDs:
сродни постепенному увеличению подсчета ссылок идентификатора объекта 1; передача идентификатора объекта в массиве идентификаторов объектовmanagedObjectContextDidUnregisterObjectsWithIDs:
сродни постепенному уменьшению подсчета ссылок идентификатора объекта 1. Только, когда подсчет ссылок идентификатора объекта не является 0 никакими контекстами, указывают, что они используют соответствующий управляемый объект. (Идентификаторы объектов запускаются с подсчета ссылок 0.)Например, если методы регистра вызываются на два случая, когда массив идентификаторов объектов содержит данный идентификатор объекта, и метод нерегистра вызывается один раз, когда массив идентификаторов объектов содержит тот идентификатор объекта, тогда контекст все еще использует объект с данным ID.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает новый идентификатор объекта, использующий определенные данные в качестве ключа.
Объявление
Swift
func newObjectIDForEntity(_
entity
: NSEntityDescription, referenceObjectdata
: AnyObject) -> NSManagedObjectIDObjective C
- (NSManagedObjectID *)newObjectIDForEntity:(NSEntityDescription *)
entity
referenceObject:(id)data
Параметры
entity
Объект для нового идентификатора объекта.
data
Объект типа
NSString
илиNSNumber
использовать в качестве ключа.Возвращаемое значение
Новый идентификатор объекта для экземпляра объекта, указанного
entity
и это используетdata
как ключ.Обсуждение
Вы не должны переопределять этот метод.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращается справочные данные раньше создавали данный идентификатор объекта.
Объявление
Swift
func referenceObjectForObjectID(_
objectID
: NSManagedObjectID) -> AnyObjectObjective C
- (id)referenceObjectForObjectID:(NSManagedObjectID *)
objectID
Параметры
objectID
Идентификатор объекта создается получателем.
Возвращаемое значение
Справочные данные раньше создавали, возразил.
Обсуждение
Этот метод повышает
NSInvalidArgumentException
если идентификатор объекта не создавался хранилищем получения.Вы не должны переопределять этот метод.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.