Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Ссылка платформы CoreData ссылка класса NSManagedObjectContext

Опции
Развертывание Target:

На этой странице
Язык:

NSManagedObjectContext

Наследование


Оператор импорта


Swift

import CoreData

Objective C

@import CoreData;

Доступность


Доступный в iOS 3.0 и позже.

Экземпляр NSManagedObjectContext представляет единственное «объектное пространство» или временную память в приложении. Его основная ответственность состоит в том, чтобы управлять набором управляемых объектов. Эти объекты формируют группу связанных объектов модели, представляющих внутренне непротиворечивое представление одного или более персистентных хранилищ. Экземпляр отдельного управляемого объекта существует в одном и только одном контексте, но многократные копии объекта могут существовать в различных контекстах. Таким образом объект uniquing ограничен по объему к определенному контексту.

Управление жизненным циклом

Контекст является мощным объектом с центральной ролью в жизненный цикл управляемых объектов, с ответственностью от управления жизненным циклом (включая сбой) к проверке, обработке обратной связи и отмене/восстановлению. Через контекст можно получить или «выбрать» объекты от персистентного хранилища, внести изменения в те объекты, и затем или отбросить изменения или — снова через контекст — фиксируют их назад персистентному хранилищу. Контекст ответственен за наблюдение за изменениями в его объектах и поддерживает менеджера по отмене, таким образом, можно иметь контроль с более прекрасными зернами над отменой и восстановлением. Можно вставить новые объекты и удалить, которые Вы выбрали и передаете эти модификации персистентному хранилищу.

Все объекты, выбранные от внешнего хранилища, регистрируются в контексте вместе с глобальным идентификатором (экземпляр NSManagedObjectID) это используется для однозначного определения каждого объекта к внешнему хранилищу.

Родительское хранилище

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

До OS X v10.7 и iOS v5.0, родительское хранилище всегда является персистентным координатором хранилища. В OS X v10.7 и позже и iOS v5.0 и позже, родительское хранилище может быть другим контекстом управляемого объекта. В конечном счете корень родословной контекста должен быть персистентным координатором хранилища. Координатор обеспечивает модель управляемого объекта и диспетчеризирует запросы различным персистентным хранилищам, содержащим данные.

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

  • Выполнение фоновых работ на втором потоке или очереди.

  • Управляя отбрасываемыми редактированиями, такой как в окне инспектора или представлении.

Поскольку первый сценарий подразумевает, родительский контекст может запросы на обслуживание от дочерних элементов на различных потоках. Вы не можете, поэтому, использовать родительские контексты, создаваемые с типом ограничения потока (см. Параллелизм).

При сохранении изменений в контексте изменения только фиксируются, “каждый запасает”. При сохранении дочернего контекста изменения продвинуты к его родителю. Изменения не сохраняются к персистентному хранилищу, пока не сохраняется корневой контекст. (Корневой контекст управляемого объекта является тем, родительский контекст которого nil.), Кроме того, родитель не вытягивает изменения от дочерних элементов, прежде чем он сохранит. Если Вы хотите в конечном счете фиксировать изменения, необходимо сохранить дочерний контекст.

Уведомления

Контекст отправляет уведомления в различных точках — посмотрите NSManagedObjectContextObjectsDidChangeNotification например. Как правило, необходимо зарегистрироваться для получения этих уведомлений только из известных контекстов:

  • [[NSNotificationCenter defaultCenter] addObserver:self
  • selector:@selector(<#Selector name#>)
  • name:NSManagedObjectContextDidSaveNotification
  • object:<#A managed object context#>];

Несколько системных платформ используют Базовые Данные внутренне. Если Вы регистрируетесь для получения этих уведомлений из всех контекстов (путем передачи nil как параметр объекта к методу такой как addObserver:selector:name:object:), тогда можно получить неожиданные уведомления, которые трудно обработать.

Параллелизм

Базовый поток использования Данных (или сериализированная очередь) ограничение для защиты управляемых объектов и контекстов управляемого объекта (см. Параллелизм с Базовыми Данными). Последствие этого - то, что контекст предполагает, что владелец по умолчанию является потоком или очередью, выделившей его — это определяется потоком, вызывающим init метод. Вы не должны, поэтому, инициализировать контекст на одном потоке, тогда передают его различному потоку. Вместо этого необходимо передать ссылку на персистентного координатора хранилища и иметь поток/очередь получения, создают новый контекст, полученный из этого. Если Вы используете NSOperation, необходимо создать контекст в main (для последовательной очереди) или start (для параллельной очереди).

В OS X v10.7 и позже и iOS v5.0 и позже при создании контекста можно указать образец параллелизма, с которым Вы будете использовать его использование initWithConcurrencyType:. Когда Вы создаете контекст управляемого объекта с помощью initWithConcurrencyType: у Вас есть три опции для его потока (очередь) ассоциация

  • Ограничение (NSConfinementConcurrencyType)

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

    Если родительское хранилище контекста управляемого объекта является персистентным координатором хранилища, можно только использовать этот тип параллелизма.

  • Частная очередь (NSPrivateQueueConcurrencyType)

    Контекст создает и управляет частной очередью.

  • Основная очередь (NSMainQueueConcurrencyType)

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

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

Вы используете контексты с помощью основанных на очереди типов параллелизма в сочетании с performBlock: и performBlockAndWait:. Вы группируете «стандартные» сообщения для отправки к контексту в блоке для передачи одному из этих методов. Существует два исключения:

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

  • Если Ваш код выполняется на основном потоке, можно вызвать методы на основные контексты стиля очереди непосредственно вместо того, чтобы использовать блок, базируемый API.

performBlock: и performBlockAndWait: гарантируйте, что блочные операции выполняются на очереди, указанной для контекста. performBlock: метод сразу возвращается, и контекст выполняет блочные методы на своем собственном потоке. С performBlockAndWait: метод, контекст все еще выполняет блочные методы на своем собственном потоке, но метод не возвращается, пока блок не выполняется.

Важно ценить, что блоки выполняются как отличное собрание произведений. Как только Ваши концы блока, кто-либо еще может ставить в очередь другой блок, изменения отмены, сбросьте контекст и т.д. Таким образом блоки могут быть довольно большими, и обычно заканчиваться путем вызова save:.

  • __block NSError *error;
  • __block BOOL savedOK = NO;
  • [myMOC performBlockAndWait:^{
  • // Do lots of things with the context.
  • savedOK = [myMOC save:&error];
  • }];

Можно также выполнить другие операции, такие как:

  • NSFetchRequest *fr = [NSFetchRequest fetchRequestWithEntityName:@"Entity"];
  • __block NSUInteger rCount = 0;
  • [context performBlockAndWait:^() {
  • NSError *error;
  • rCount = [context countForFetchRequest:fr error:&error];
  • if (rCount == NSNotFound) {
  • // Handle the error.
  • } }];
  • NSLog(@"Retrieved %d items", (int)rCount);

Разделение на подклассы примечаний

Вы строго отговорены разделить на подклассы NSManagedObjectContext. Отслеживание изменений и механизмы управления отменой высоко оптимизированы и следовательно сложные и хрупкие. Вмешиваясь Ваша собственная дополнительная логика, которая могла бы повлиять processPendingChanges может иметь непредвиденные обстоятельства. В ситуациях, таких как миграция хранилища, Базовые Данные создадут экземпляры NSManagedObjectContext для его собственного использования. При этих обстоятельствах Вы не можете полагаться ни на какие функции своего пользовательского подкласса. Любой NSManagedObject подкласс должен всегда быть полностью совместим с NSManagedObjectContext (т.е. это не может полагаться на функции подкласса NSManagedObjectContext).

  • Возвращает массив объектов, удовлетворяющих критерии, указанные данным запросом выборки.

    Объявление

    Swift

    func executeFetchRequest(_ request: NSFetchRequest, error error: NSErrorPointer) -> [AnyObject]?

    Objective C

    - (NSArray *)executeFetchRequest:(NSFetchRequest *)request error:(NSError **)error

    Параметры

    request

    Запрос выборки, указывающий критерии поиска для выборки.

    error

    Если существует проблема, выполняющая выборку, по возврату содержит экземпляр NSError это описывает проблему.

    Возвращаемое значение

    Массив объектов, удовлетворяющих критерии, указанные request выбранный от получателя и от персистентных хранилищ связался с персистентным координатором хранилища получателя. Если ошибка происходит, возвраты nil. Если никакие объекты не соответствуют критерии, указанные request, возвращает пустой массив.

    Обсуждение

    Возвращенные объекты регистрируются в получателе.

    Следующие моменты важны для рассмотрения:

    • Если запрос выборки не имеет никакого предиката, то все экземпляры указанного объекта получены, по модулю другие критерии ниже.

    • Объект, удовлетворяющий критерии, указанные request (это - экземпляр объекта, указанного запросом, и это соответствует предикат запроса, если существует один), и это было вставлено в контекст, но который еще не сохраняется к персистентному хранилищу, получен, если запрос выборки выполняется на том контексте.

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

    • Если объект был удален из контекста, запрос выборки не получает его, даже если то удаление не было сохранено к хранилищу.

    Объекты, понятые (заполненный, запущенные отказы, “читал из”, и т.д.), а также ожидание обновленного, вставленного или удаленного, никогда не изменяются работой выборки без вмешательства разработчика. Если Вы выбираете некоторые объекты, работу с ними, и затем выполняете новую выборку, включающую надмножество тех объектов, Вы не получаете новые экземпляры или обновляете данные для существующих объектов — Вы получаете существующие объекты с их текущим состоянием в памяти.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Возвращает число объектов, которые возвратил бы данный запрос выборки, если бы это было передано executeFetchRequest:error:.

    Объявление

    Swift

    func countForFetchRequest(_ request: NSFetchRequest, error error: NSErrorPointer) -> Int

    Objective C

    - (NSUInteger)countForFetchRequest:(NSFetchRequest *)request error:(NSError **)error

    Параметры

    request

    Запрос выборки, указывающий критерии поиска для выборки.

    error

    Если существует проблема, выполняющая выборку, по возврату содержит экземпляр NSError это описывает проблему.

    Возвращаемое значение

    Число объектов, которые возвратил бы данный запрос выборки, если бы это было передано executeFetchRequest:error:, или NSNotFound если происходит ошибка.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Если объект регистрируется в получателе, возвращает объект для указанного ID.

    Объявление

    Swift

    func objectRegisteredForID(_ objectID: NSManagedObjectID) -> NSManagedObject?

    Objective C

    - (NSManagedObject *)objectRegisteredForID:(NSManagedObjectID *)objectID

    Параметры

    objectID

    Идентификатор объекта.

    Возвращаемое значение

    Объект для указанного ID, если это регистрируется в получателе, иначе nil.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Возвращает объект для указанного ID.

    Объявление

    Swift

    func objectWithID(_ objectID: NSManagedObjectID) -> NSManagedObject

    Objective C

    - (NSManagedObject *)objectWithID:(NSManagedObjectID *)objectID

    Параметры

    objectID

    Идентификатор объекта.

    Возвращаемое значение

    Объект для указанного ID.

    Обсуждение

    Если объект не регистрируется в контексте, он может быть выбран или возвращен как отказ. Этот метод всегда возвращает объект. Данные в персистентном хранилище, представленном objectID как предполагается, существует — если это не делает, возвращенный объект выдает исключение при доступе к любому свойству (т.е. когда отказ запущен). Преимущество этого поведения - то, что оно позволяет Вам создавать и использовать отказы, затем создайте базовые данные позже или в отдельном контексте.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Возвращает объект для указанного ID.

    Объявление

    Swift

    func existingObjectWithID(_ objectID: NSManagedObjectID, error error: NSErrorPointer) -> NSManagedObject?

    Objective C

    - (NSManagedObject *)existingObjectWithID:(NSManagedObjectID *)objectID error:(NSError **)error

    Параметры

    objectID

    Идентификатор объекта для нужного объекта.

    error

    Если существует проблема в получении объекта, указанного objectID, по возврату содержит ошибку, описывающую проблему.

    Возвращаемое значение

    Объект, указанный objectID. Если объект не может быть выбран, или не существует или не может быть дан сбой, он возвращается nil.

    Обсуждение

    Если существует управляемый объект с данным ID, уже зарегистрированным в контексте, тот объект возвращается непосредственно; иначе соответствующий объект дан сбой в контекст.

    Если данные не кэшируются, этот метод мог бы выполнить I/O.

    В отличие от этого objectWithID:, этот метод никогда не возвращает отказ.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • registeredObjects Свойство

    Набор объектов зарегистрировался в получателе. (только для чтения)

    Объявление

    Swift

    var registeredObjects: Set<NSObject> { get }

    Objective C

    @property(nonatomic, readonly, strong) NSSet *registeredObjects

    Обсуждение

    Контекст управляемого объекта не отправляет уведомления наблюдения значения ключа когда возвращаемое значение registeredObjects изменения.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

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

    Объявление

    Swift

    func insertObject(_ object: NSManagedObject)

    Objective C

    - (void)insertObject:(NSManagedObject *)object

    Параметры

    object

    Управляемый объект.

    Обсуждение

    Управляемый объект (object) регистрируется в получателе с временным глобальным ID. Когда изменения фиксируются, это присваивается постоянный глобальный ID. Если текущая операция откатывается (например, если получатель отправляется a rollback сообщение) перед работой сохранения, объект не зарегистрирован от получателя.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

    См. также

    – insertedObjects

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

    Объявление

    Swift

    func deleteObject(_ object: NSManagedObject)

    Objective C

    - (void)deleteObject:(NSManagedObject *)object

    Параметры

    object

    Управляемый объект.

    Обсуждение

    Когда изменения фиксируются, object будет удален из uniquing таблиц. Если object еще не был сохранен к персистентному хранилищу, оно просто удалено из получателя.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

    См. также

    – deletedObjects
    isDeleted (NSManagedObject)

  • Указывает хранилище, в котором будет сохранен недавно-вставленный-объект.

    Объявление

    Swift

    func assignObject(_ object: AnyObject, toPersistentStore store: NSPersistentStore)

    Objective C

    - (void)assignObject:(id)object toPersistentStore:(NSPersistentStore *)store

    Параметры

    object

    Управляемый объект.

    store

    Персистентное хранилище.

    Обсуждение

    Можно получить хранилище от персистентного координатора хранилища, с помощью, например, persistentStoreForURL:.

    Специальные замечания

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

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Преобразовывает в постоянный IDs идентификаторы объектов объектов в данном массиве.

    Объявление

    Swift

    func obtainPermanentIDsForObjects(_ objects: [AnyObject], error error: NSErrorPointer) -> Bool

    Objective C

    - (BOOL)obtainPermanentIDsForObjects:(NSArray *)objects error:(NSError **)error

    Параметры

    objects

    Массив управляемых объектов.

    error

    Если ошибка происходит, по возврату содержит NSError объект, описывающий проблему.

    Возвращаемое значение

    YEStrue если постоянный IDs получен для всех объектов в objects, иначе NOfalse.

    Обсуждение

    Этот метод преобразовывает идентификатор объекта каждого управляемого объекта в objects к постоянному ID. Несмотря на то, что объект будет иметь постоянный ID, он все еще ответит положительно на isInserted пока это не сохраняется. Любой объект, уже имеющий постоянный ID, проигнорирован.

    Любой объект, не уже присвоенный хранилищу, присваивается на основе того же использования Данных Ядра правил для присвоения во время работы сохранения (сначала перезаписываемое хранилище, поддерживающее объект, и подходящий для экземпляра и его связанных элементов).

    Специальные замечания

    Этот метод приводит к транзакции с базовым хранилищем, изменяющим дату модификации файла.

    В OS X это заканчивается дополнительное рассмотрение при вызове этого метода на контекст управляемого объекта, связанный с экземпляром NSPersistentDocument. Экземпляры NSDocument потребность знать, что они находятся в синхронизации с базовым содержанием. Для предотвращения проблем после вызова этого метода, необходимо поэтому обновить дату модификации документа (использование setFileModificationDate:).

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Отмечает объект для обнаружения конфликта.

    Объявление

    Swift

    func detectConflictsForObject(_ object: NSManagedObject)

    Objective C

    - (void)detectConflictsForObject:(NSManagedObject *)object

    Параметры

    object

    Управляемый объект.

    Обсуждение

    Если на следующем вызове save: object был изменен в его персистентном хранилище, сбоях сохранения. Это позволяет оптимистическую блокировку для неизменных объектов. Обнаружение конфликта всегда выполняется на измененных или удаленных объектах.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

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

    Объявление

    Swift

    func refreshObject(_ object: NSManagedObject, mergeChanges flag: Bool)

    Objective C

    - (void)refreshObject:(NSManagedObject *)object mergeChanges:(BOOL)flag

    Параметры

    object

    Управляемый объект.

    flag

    Булево значение.

    Если flag NOfalse, тогда object превращен в отказ, и потеряны любые незаконченные изменения. Объект остается отказом, пока к нему не получают доступ снова, в котором времени его значения свойств будут перезагружены от хранилища или в последний раз кэшировали состояние.

    Если flag YEStrue, тогда objectзначения свойств перезагружаются от значений от хранилища или последнего кэшируемого состояния тогда любые изменения, внесенные (в локальном контексте), повторно применяются по тем (теперь недавно обновленный) значения. (Если flag YEStrue слияние значений в object будет всегда успешно выполняться — в этом случае нет поэтому никакой такой вещи как “конфликт слияния” или слияние, которое не возможно.)

    Обсуждение

    Если интервал переутомления (см. stalenessInterval) не был превышен, любые доступные кэшированные данные снова используются вместо того, чтобы выполнить новую выборку. Если flag YEStrue, этот метод не влияет ни на какие переходные свойства; если flag NOfalse, избавляются от переходных свойств.

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

    Превращение object в отказ (flag NOfalse) средние значения что сильные ссылки к связанным управляемым объектам (т.е. те, к который object имеет ссылку), повреждаются, таким образом, можно также использовать этот метод для обрезки части графа объектов, Вы хотите ограничить использование памяти.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Вынуждает получатель обработать изменения в графе объектов.

    Объявление

    Swift

    func processPendingChanges()

    Objective C

    - (void)processPendingChanges

    Обсуждение

    Этот метод заставляет изменения в зарегистрированных управляемых объектах быть зарегистрированными с менеджером по отмене.

    В находящихся в AppKit приложениях этот метод вызывается автоматически, по крайней мере, один раз во время цикла событий (в конце цикла) — это можно вызвать чаще, чем это, если платформа должна объединить Ваши изменения прежде, чем сделать что-то еще. Можно также вызвать его вручную для объединения любых незаконченных необработанных изменений.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • insertedObjects Свойство

    Набор объектов, вставленных в получатель, но еще не сохраненных в персистентном хранилище. (только для чтения)

    Объявление

    Swift

    var insertedObjects: Set<NSObject> { get }

    Objective C

    @property(nonatomic, readonly, strong) NSSet *insertedObjects

    Обсуждение

    Контекст управляемого объекта не отправляет уведомления наблюдения значения ключа когда возвращаемое значение insertedObjects изменения — это действительно, однако, отправляет a NSManagedObjectContextObjectsDidChangeNotification уведомление, когда изменение внесено, и a NSManagedObjectContextWillSaveNotification и a NSManagedObjectContextDidSaveNotification уведомление прежде и после изменений фиксируется соответственно.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • updatedObjects Свойство

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

    Объявление

    Swift

    var updatedObjects: Set<NSObject> { get }

    Objective C

    @property(nonatomic, readonly, strong) NSSet *updatedObjects

    Обсуждение

    Контекст управляемого объекта не отправляет уведомления наблюдения значения ключа когда возвращаемое значение updatedObjects изменения. Контекст действительно, однако, отправляет a NSManagedObjectContextObjectsDidChangeNotification уведомление, когда изменение внесено, и a NSManagedObjectContextWillSaveNotification уведомление и a NSManagedObjectContextDidSaveNotification уведомление прежде и после изменений фиксируется соответственно.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • deletedObjects Свойство

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

    Объявление

    Swift

    var deletedObjects: Set<NSObject> { get }

    Objective C

    @property(nonatomic, readonly, strong) NSSet *deletedObjects

    Обсуждение

    Возвращенный набор не обязательно включает все объекты, удаленные (использование deleteObject:) — если объект был вставлен и удален без прошедшей работы сохранения, он не включен в набор.

    Контекст управляемого объекта не отправляет уведомления наблюдения значения ключа когда возвращаемое значение deletedObjects изменения. Контекст действительно, однако, отправляет a NSManagedObjectContextObjectsDidChangeNotification уведомление, когда изменение внесено, и a NSManagedObjectContextWillSaveNotification уведомление и a NSManagedObjectContextDidSaveNotification уведомление прежде и после изменений фиксируется соответственно (несмотря на то, что снова набор удаленных объектов, данных для NSManagedObjectContextDidSaveNotification не включает объекты, вставленные и удаленные без прошедшей работы сохранения — т.е. они никогда не сохранялись к персистентному хранилищу).

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • init (concurrencyType:) - initWithConcurrencyType: Определяемый инициализатор

    Инициализирует контекст с данным типом параллелизма.

    Объявление

    Swift

    init(concurrencyType type: NSManagedObjectContextConcurrencyType)

    Objective C

    - (instancetype)initWithConcurrencyType:(NSManagedObjectContextConcurrencyType)type

    Параметры

    type

    Образец параллелизма, с которым будет использоваться контекст.

    Возвращаемое значение

    Контекст, инициализированный для использования данного типа параллелизма.

    Обсуждение

    Для получения дополнительной информации на использовании этого метода, посмотрите Параллелизм.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 5.0 и позже.

    См. также

    – concurrencyType

  • concurrencyType Свойство

    Тип параллелизма для получателя. (только для чтения)

    Объявление

    Swift

    var concurrencyType: NSManagedObjectContextConcurrencyType { get }

    Objective C

    @property(readonly) NSManagedObjectContextConcurrencyType concurrencyType

    Обсуждение

    Для получения дополнительной информации на типе параллелизма, посмотрите Параллелизм.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 5.0 и позже.

  • Объединяет изменения, указанные в данном уведомлении.

    Объявление

    Swift

    func mergeChangesFromContextDidSaveNotification(_ notification: NSNotification)

    Objective C

    - (void)mergeChangesFromContextDidSaveNotification:(NSNotification *)notification

    Параметры

    notification

    Экземпляр NSManagedObjectContextDidSaveNotification уведомление отправляется другим контекстом.

    Обсуждение

    Этот метод обновляет любые объекты, обновленные в другом контексте, отказах в любых недавно-вставленных-объектах, и вызывает deleteObject:: на тех, которые были удалены.

    Можно передать a NSManagedObjectContextDidSaveNotification уведомление, отправленное контекстом управляемого объекта на другом потоке, однако, Вы не должны использовать управляемые объекты в пользовательском информационном словаре непосредственно. Для получения дополнительной информации посмотрите Параллелизм с Базовыми Данными.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • undoManager Свойство

    Менеджер по отмене получателя.

    Объявление

    Swift

    var undoManager: NSUndoManager?

    Objective C

    @property(nonatomic, strong) NSUndoManager *undoManager

    Обсуждение

    Можно установить менеджера по отмене в nil отключить поддержку отмены. Это обеспечивает выигрыш в производительности, если Вы не хотите поддерживать отмену для определенного контекста, например в большом процессе импорта — см. Базовое Руководство по программированию Данных.

    Если контекст не имеет менеджера по отмене, можно включить поддержку отмены путем установки один. Если Вы хотите интегрировать операции отмены контекста с другим менеджером по отмене в Вашем приложении, можно также заменить менеджера по отмене контекста.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

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

    Объявление

    Swift

    func undo()

    Objective C

    - (void)undo

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Отправляет сообщение восстановления менеджеру по отмене получателя, прося, чтобы оно для инвертирования последней работы отмены применилось к объектам в графе объектов.

    Объявление

    Swift

    func redo()

    Objective C

    - (void)redo

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Возвращает получатель его основному состоянию.

    Объявление

    Swift

    func reset()

    Objective C

    - (void)reset

    Обсуждение

    Об управляемых объектах всего получателя «забывают». При использовании этого метода необходимо гарантировать, чтобы Вы также отбросили ссылки на любые управляемые объекты, выбранные с помощью получателя, так как они будут недопустимы впоследствии.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Удаляет все из стека отмены, отбрасывает все вставки и удаления, и восстанавливает обновленные объекты к их последним зафиксированным значениям.

    Объявление

    Swift

    func rollback()

    Objective C

    - (void)rollback

    Обсуждение

    Этот метод не повторно выбирает данные от персистентного хранилища или хранилищ.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

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

    Объявление

    Swift

    func save(_ error: NSErrorPointer) -> Bool

    Objective C

    - (BOOL)save:(NSError **)error

    Параметры

    error

    Указатель на NSError объект. Вы не должны создавать NSError объект. Аварийные прекращения работы работы сохранения после первого отказа, если Вы передаете NULL.

    Возвращаемое значение

    YEStrue если сохранение успешно выполняется, иначе NOfalse.

    Обсуждение

    Если были многократные ошибки (например, несколько отредактированных объектов имели отказы проверки), описание NSError возвращенный указывает, что были многократные ошибки, и его userInfo словарь содержит ключ NSDetailedErrors. Значение связалось с NSDetailedErrors ключ является массивом, содержащим частное лицо NSError объекты.

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

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • hasChanges Свойство

    Булево значение, указывающее, отменил ли получатель фиксацию изменений. (только для чтения)

    Объявление

    Swift

    var hasChanges: Bool { get }

    Objective C

    @property(nonatomic, readonly) BOOL hasChanges

    Обсуждение

    Если Вы наблюдаете это свойство с помощью наблюдения значения ключа (KVO), Вы не должны касаться контекста или его объектов в Вашей реализации observeValueForKeyPath:ofObject:change:context: для этого уведомления. (Это вызвано тем, что запутанности расположений уведомлений KVO — например, контекст может быть посреди работы отмены или восстановления конфликта слияния.), Если необходимо отправить сообщения в контекст или изменить какой-либо из его управляемых объектов в результате изменения в значении hasChanges, необходимо сделать так после того, как стек вызовов раскручивается (обычно использование performSelector:withObject:afterDelay: или похожий метод).

    Специальные замечания

    В  OS X v10.6 и позже, это свойство является значением ключа, наблюдающим совместимый.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • persistentStoreCoordinator Свойство

    Персистентный координатор хранилища получателя.

    Объявление

    Swift

    var persistentStoreCoordinator: NSPersistentStoreCoordinator?

    Objective C

    @property(strong) NSPersistentStoreCoordinator *persistentStoreCoordinator

    Возвращаемое значение

    Персистентный координатор хранилища получателя.

    Обсуждение

    Координатор обеспечивает модель управляемого объекта и обрабатывает постоянство. Обратите внимание на то, что многократные контексты могут совместно использовать координатора. Может не быть nil.

    Установка persistentStoreCoordinator к nil повысит исключение. Если Вы хотите “разъединить" контекст от его персистентного координатора хранилища, необходимо просто установить все сильные ссылки в контекст к nil и позвольте ему обычно освобождаться.

    Для получения дополнительной информации посмотрите Родительское Хранилище.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • parentContext Свойство

    Родительский контекст получателя. (только для чтения)

    Объявление

    Swift

    var parentContext: NSManagedObjectContext?

    Objective C

    @property(strong) NSManagedObjectContext *parentContext

    Обсуждение

    nil указывает, что нет никакого родительского контекста. Для получения дополнительной информации посмотрите Родительское Хранилище.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 5.0 и позже.

    См. также

    persistentStoreCoordinator

  • Попытки получить блокировку на получателе.

    Объявление

    Swift

    func lock()

    Objective C

    - (void)lock

    Обсуждение

    Этот метод блокирует выполнение потока, пока не может быть получена блокировка. Приложение защищает критический раздел кода, требуя, чтобы поток получил блокировку прежде, чем выполнить код. Как только критический раздел проходит, поток оставляет блокировку путем вызова unlock.

    Отправка этого сообщения к контексту управляемого объекта помогает платформе понять объем транзакции в многопоточной среде. Предпочтительно использовать NSManagedObjectContextреализация NSLocking вместо этого использование отдельного взаимоисключающего объекта.

    Если Вы блокируете (или успешно tryLock) контекст управляемого объекта, поток, в котором выполняется вызов блокировки, должны сохранить сильную ссылку к контексту, пока это не вызывает, разблокировали, иначе если контекст будет освобожден, то это приведет к мертвой блокировке.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

    Осуждаемый в iOS 8.0.

  • Оставляет ранее полученную блокировку.

    Объявление

    Swift

    func unlock()

    Objective C

    - (void)unlock

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

    Осуждаемый в iOS 8.0.

  • tryLock () - tryLock (iOS 8.0)

    Попытки получить блокировку.

    Объявление

    Swift

    func tryLock() -> Bool

    Objective C

    - (BOOL)tryLock

    Возвращаемое значение

    YEStrue если блокировка была получена, NOfalse иначе.

    Обсуждение

    Этот метод сразу возвращается после попытки получить блокировку.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

    Осуждаемый в iOS 8.0.

  • Булевская переменная, указывающая, распространяет ли получатель, удаляет в конце события, в котором было внесено изменение.

    Объявление

    Swift

    var propagatesDeletesAtEndOfEvent: Bool

    Objective C

    @property(nonatomic) BOOL propagatesDeletesAtEndOfEvent

    Обсуждение

    YEStrue если получатель распространяет, удаляет в конце события, в котором изменение было внесено, NOfalse если это распространяет, удаляет только во время работы сохранения. Значение по умолчанию YEStrue.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • retainsRegisteredObjects Свойство

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

    Объявление

    Swift

    var retainsRegisteredObjects: Bool

    Objective C

    @property(nonatomic) BOOL retainsRegisteredObjects

    Обсуждение

    Если установлено в YEStrue, получатель сохраняет сильные ссылки ко всем зарегистрированным управляемым объектам. Если установлено в NOfalse, тогда получатель сохраняет сильные ссылки к зарегистрированным объектам только, когда они вставлены, обновлены, удалены или заблокированы. Значение по умолчанию NOfalse.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • stalenessInterval Свойство

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

    Объявление

    Swift

    var stalenessInterval: NSTimeInterval

    Objective C

    @property NSTimeInterval stalenessInterval

    Обсуждение

    Интервал переутомления управляет, использует ли выполнение отказа данные, ранее выбранные приложением, или выпускает новую выборку (см. также refreshObject:mergeChanges:). Интервал переутомления не влияет на использующиеся в настоящее время объекты (т.е. он не используется для автоматического обновления значений свойств от персистентного хранилища после определенного периода времени).

    Значение истечения срока применяется на на объектное основание. Это - относительное время, пока кэшированные данные (снимки) нельзя считать устаревшими. Например, значение 300,0 сообщает контексту для использования кэшируемой информации в течение не больше, чем 5 минут после того, как был первоначально выбран объект.

    Обратите внимание на то, что интервал переутомления является подсказкой и не может поддерживаться всеми персистентными типами хранилища. Это не используется XML и двоичными хранилищами, потому что эти хранилища поддерживают всю текущую стоимость в памяти.

    Значение по умолчанию является отрицательной величиной, представляющей бесконечное позволенное переутомление. 0.0 не представляет “приемлемого переутомления”.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • mergePolicy Свойство

    Политика слияния получателя.

    Объявление

    Swift

    var mergePolicy: AnyObject

    Objective C

    @property(strong) id mergePolicy

    Обсуждение

    Значение по умолчанию NSErrorMergePolicy. Для возможных значений посмотрите NSMergePolicy.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Асинхронно выполняет данный блок на очереди получателя.

    Объявление

    Swift

    func performBlock(_ block: () -> Void)

    Objective C

    - (void)performBlock:(void (^)(void))block

    Параметры

    block

    Блок для выполнения.

    Обсуждение

    Если контекст был инициализирован с помощью, Вы используете этот метод для отправки сообщений в управляемые объекты NSPrivateQueueConcurrencyType или NSMainQueueConcurrencyType.

    Этот метод инкапсулирует пул автовыпуска и вызов к processPendingChanges.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 5.0 и позже.

    См. также

    – performBlockAndWait:

  • Синхронно выполняет данный блок на очереди получателя.

    Объявление

    Swift

    func performBlockAndWait(_ block: () -> Void)

    Objective C

    - (void)performBlockAndWait:(void (^)(void))block

    Параметры

    block

    Блок для выполнения.

    Обсуждение

    Если контекст был инициализирован с помощью, Вы используете этот метод для отправки сообщений в управляемые объекты NSPrivateQueueConcurrencyType или NSMainQueueConcurrencyType.

    Этот метод можно безопасно вызвать повторно используемо.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 5.0 и позже.

    См. также

    – performBlock:

  • userInfo Свойство

    Пользовательская информация получателя.

    Объявление

    Swift

    var userInfo: NSMutableDictionary? { get }

    Objective C

    @property(nonatomic, readonly, strong) NSMutableDictionary *userInfo

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 5.0 и позже.

Типы данных

  • Константы для указания образца параллелизма, с которым будет использоваться контекст.

    Объявление

    Swift

    enum NSManagedObjectContextConcurrencyType : UInt { case ConfinementConcurrencyType case PrivateQueueConcurrencyType case MainQueueConcurrencyType }

    Objective C

    enum { NSConfinementConcurrencyType = 0x00, NSPrivateQueueConcurrencyType = 0x01, NSMainQueueConcurrencyType = 0x02 }; typedef NSUInteger NSManagedObjectContextConcurrencyType;

    Константы

    • ConfinementConcurrencyType

      NSConfinementConcurrencyType

      Указывает, что контекст будет использовать образец ограничения потока.

      Доступный в iOS 5.0 и позже.

    • PrivateQueueConcurrencyType

      NSPrivateQueueConcurrencyType

      Указывает, что контекст будет связан с частной очередью отгрузки.

      Доступный в iOS 5.0 и позже.

    • MainQueueConcurrencyType

      NSMainQueueConcurrencyType

      Указывает, что контекст будет связан с основной очередью.

      Доступный в iOS 5.0 и позже.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 5.0 и позже.

  • Базовые Данные используют эти строковые константы в качестве ключей в пользовательском информационном словаре в уведомлении NSManagedObjectContextObjectsDidChangeNotification.

    Объявление

    Swift

    let NSInsertedObjectsKey: String let NSUpdatedObjectsKey: String let NSDeletedObjectsKey: String let NSRefreshedObjectsKey: String let NSInvalidatedObjectsKey: String let NSInvalidatedAllObjectsKey: String

    Objective C

    NSString * const NSInsertedObjectsKey; NSString * const NSUpdatedObjectsKey; NSString * const NSDeletedObjectsKey; NSString * const NSRefreshedObjectsKey; NSString * const NSInvalidatedObjectsKey; NSString * const NSInvalidatedAllObjectsKey;

    Константы

    • NSInsertedObjectsKey

      Ключ для набора объектов, вставленных в контекст.

      Доступный в iOS 3.0 и позже.

    • NSUpdatedObjectsKey

      Ключ для набора обновленных объектов.

      Доступный в iOS 3.0 и позже.

    • NSDeletedObjectsKey

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

      Доступный в iOS 3.0 и позже.

    • NSRefreshedObjectsKey

      Ключ для набора обновленных объектов.

      Доступный в iOS 3.0 и позже.

    • NSInvalidatedObjectsKey

      Ключ для набора лишенных законной силы объектов.

      Доступный в iOS 3.0 и позже.

    • NSInvalidatedAllObjectsKey

      Ключ, указывающий, что все объекты в контексте были лишены законной силы.

      Доступный в iOS 3.0 и позже.

  • Отправленный, когда изменяются значения свойств объектов, содержавшихся в контексте управляемого объекта.

    Уведомление отправляется во время processPendingChanges, после того, как изменения были обработаны, но прежде чем будет безопасно вызвать, сохраните: снова (если Вы пробуете, Вы генерируете бесконечный цикл).

    Объект уведомления является контекстом управляемого объекта. userInfo словарь содержит следующие ключи: NSInsertedObjectsKey, NSUpdatedObjectsKey, и NSDeletedObjectsKey.

    Обратите внимание на то, что это уведомление отправляется только, когда изменяются управляемые объекты; когда управляемые объекты добавляются к контексту как результат выборки, это не отправляется.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Отправленный каждый раз, когда контекст управляемого объекта завершает работу сохранения.

    Объект уведомления является контекстом управляемого объекта. userInfo словарь содержит следующие ключи: NSInsertedObjectsKey, NSUpdatedObjectsKey, и NSDeletedObjectsKey.

    Можно только использовать управляемые объекты в этом уведомлении на том же потоке, на котором оно было отправлено.

    Можно передать объект уведомления mergeChangesFromContextDidSaveNotification: на другом потоке однако Вы не должны использовать управляемый объект в пользовательском информационном словаре непосредственно по другому потоку. Для получения дополнительной информации посмотрите Параллелизм с Базовыми Данными.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.

  • Отправленный каждый раз, когда контекст управляемого объекта собирается выполнить работу сохранения.

    Объект уведомления является контекстом управляемого объекта. Нет никакого userInfo словаря.

    Оператор импорта

    Objective C

    @import CoreData;

    Swift

    import CoreData

    Доступность

    Доступный в iOS 3.0 и позже.