NSMergePolicy
Вы используете объект политики слияния для разрешения конфликтов между персистентным хранилищем и версиями в памяти управляемых объектов.
Конфликт является несоответствием между состоянием, сохраненным на двух различных уровнях в Базовом Стеке данных. Когда у Вас есть устаревшие данные на некотором уровне, конфликт может возникнуть при сохранении контекста управляемого объекта. Существует два места, в которых может произойти конфликт:
Между контекстом управляемого объекта и его кэшируемым состоянием в памяти в персистентном координаторе хранилища уровень.
Между кэшируемым состоянием в персистентном координаторе хранилища и внешним хранилищем (файл, база данных, и т.д.).
Конфликты представлены экземплярами NSMergeConflict.
Оператор импорта
Swift
import CoreData
Objective C
@import CoreData;
Доступность
Доступный в OS X v10.7 и позже.
-
init (mergeType:) - initWithMergeType:Определяемый инициализаторВозвращает политику слияния, инициализированную с данным типом политики.
Объявление
Swift
init(mergeTypety: NSMergePolicyType)Objective C
- (id)initWithMergeType:(NSMergePolicyType)tyПараметры
tyТип политики слияния.
Возвращаемое значение
Политика слияния инициализируется с данным типом политики.
Обсуждение
При переопределении этого метода в подклассе необходимо вызвать реализацию суперкласса с политикой слияния, которая является самой близкой к поведению, которое Вы хотите.
Это упростит использовать реализацию суперкласса
resolveConflicts:error:и затем настройте результаты.Вследствие сложности слияния с - много отношений, этот класс разработан с ожиданием, что Вы вызываете супер как базовое внедрение.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.7 и позже.
-
Разрешает конфликты в данном списке.
Объявление
Swift
func resolveConflicts(_list: [AnyObject], errorerror: NSErrorPointer) -> BoolПараметры
listМассив конфликтов слияния (экземпляры
NSMergeConflict).errorЕсли ошибка происходит, по возврату содержит
NSErrorобъект, описывающий проблему.Возвращаемое значение
YEStrueесли конфликты были разрешены успешно, иначеNOfalse.Обсуждение
При переопределении этого метода в подклассе необходимо обычно вызывать реализацию суперкласса в дополнение к выполнению собственных операций.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.7 и позже.
-
Тип слияния. (только для чтения)
Объявление
Swift
var mergeType: NSMergePolicyType { get }Objective C
@property(readonly) NSMergePolicyType mergeTypeОператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.7 и позже.
-
Одноэлементные объекты политики слияния, определяющие стандартные способы обработать конфликты во время работы сохранения.
Объявление
Swift
var NSErrorMergePolicy: AnyObject! var NSMergeByPropertyStoreTrumpMergePolicy: AnyObject! var NSMergeByPropertyObjectTrumpMergePolicy: AnyObject! var NSOverwriteMergePolicy: AnyObject! var NSRollbackMergePolicy: AnyObject!Objective C
id NSErrorMergePolicy; id NSMergeByPropertyStoreTrumpMergePolicy; id NSMergeByPropertyObjectTrumpMergePolicy; id NSOverwriteMergePolicy; id NSRollbackMergePolicy;Константы
-
NSErrorMergePolicyNSErrorMergePolicyЕсли существуют какие-либо конфликты слияния, эта политика заставляет сохранение перестать работать.
Это - политика по умолчанию для всех контекстов управляемого объекта.
В случае отказа метод сохранения возвращается с ошибкой с userInfo словарем, содержащим идентификаторы объектов объектов, имевших конфликты (
NSInsertedObjectsKey,NSUpdatedObjectsKey).Доступный в OS X v10.4 и позже.
-
NSMergeByPropertyStoreTrumpMergePolicyNSMergeByPropertyStoreTrumpMergePolicyЭта политика объединяет конфликты между версией персистентного хранилища объекта и текущей версией в памяти, давая приоритет внешним изменениям.
Слияние происходит отдельным свойством. Для свойств, измененных и во внешнем источнике и в памяти, внешние изменения превосходят в памяти.
Доступный в OS X v10.4 и позже.
-
NSMergeByPropertyObjectTrumpMergePolicyNSMergeByPropertyObjectTrumpMergePolicyЭта политика объединяет конфликты между версией персистентного хранилища объекта и текущей версией в памяти, давая приоритет изменениям в памяти.
Слияние происходит отдельным свойством. Для свойств, измененных и во внешнем источнике и в памяти, изменения в памяти превосходят внешние.
Доступный в OS X v10.4 и позже.
-
NSOverwriteMergePolicyNSOverwriteMergePolicyЭта политика перезаписывает состояние в персистентном хранилище для измененных объектов в конфликте.
Текущее состояние измененных объектов вызывается на персистентное хранилище.
Доступный в OS X v10.4 и позже.
-
NSRollbackMergePolicyNSRollbackMergePolicyЭта политика отбрасывает изменения состояния в памяти для объектов в конфликте.
Версия персистентного хранилища состояния объектов используется.
Доступный в OS X v10.4 и позже.
Обсуждение
Политика по умолчанию
NSErrorMergePolicy. Это - единственная политика, требующая, чтобы действие исправило любые конфликты; другие политики заставляют сохранение пройти через тихо путем внесения изменений, соблюдающих их правила. -
-
Константы для определения типов политики слияния.
Объявление
Swift
enum NSMergePolicyType : UInt { case ErrorMergePolicyType case MergeByPropertyStoreTrumpMergePolicyType case MergeByPropertyObjectTrumpMergePolicyType case OverwriteMergePolicyType case RollbackMergePolicyType }Objective C
enum { NSErrorMergePolicyType = 0x00, NSMergeByPropertyStoreTrumpMergePolicyType = 0x01, NSMergeByPropertyObjectTrumpMergePolicyType = 0x02, NSOverwriteMergePolicyType = 0x03, NSRollbackMergePolicyType = 0x04 }; typedef NSUInteger NSMergePolicyType;Константы
-
ErrorMergePolicyTypeNSErrorMergePolicyTypeУказывает политику, заставляющую сохранение перестать работать, если существуют какие-либо конфликты слияния.
Доступный в OS X v10.7 и позже.
-
MergeByPropertyStoreTrumpMergePolicyTypeNSMergeByPropertyStoreTrumpMergePolicyTypeУказывает политику, что слияния конфликтуют между версией персистентного хранилища объекта и текущей версией в памяти, давая приоритет внешним изменениям.
Доступный в OS X v10.7 и позже.
-
MergeByPropertyObjectTrumpMergePolicyTypeNSMergeByPropertyObjectTrumpMergePolicyTypeУказывает политику, что слияния конфликтуют между версией персистентного хранилища объекта и текущей версией в памяти, давая приоритет изменениям в памяти.
Доступный в OS X v10.7 и позже.
-
OverwriteMergePolicyTypeNSOverwriteMergePolicyTypeУказывает политику, что перезаписи утверждают в персистентном хранилище для измененных объектов в конфликте.
Доступный в OS X v10.7 и позже.
-
RollbackMergePolicyTypeNSRollbackMergePolicyTypeУказывает политику, отбрасывающую изменения состояния в памяти для объектов в конфликте.
Доступный в OS X v10.7 и позже.
Оператор импорта
Objective C
@import CoreData;Swift
import CoreDataДоступность
Доступный в OS X v10.7 и позже.
-
