NSMergePolicy
Вы используете объект политики слияния для разрешения конфликтов между персистентным хранилищем и версиями в памяти управляемых объектов.
Конфликт является несоответствием между состоянием, сохраненным на двух различных уровнях в Базовом Стеке данных. Когда у Вас есть устаревшие данные на некотором уровне, конфликт может возникнуть при сохранении контекста управляемого объекта. Существует два места, в которых может произойти конфликт:
Между контекстом управляемого объекта и его кэшируемым состоянием в памяти в персистентном координаторе хранилища уровень.
Между кэшируемым состоянием в персистентном координаторе хранилища и внешним хранилищем (файл, база данных, и т.д.).
Конфликты представлены экземплярами NSMergeConflict
.
Оператор импорта
Swift
import CoreData
Objective C
@import CoreData;
Доступность
Доступный в OS X v10.7 и позже.
-
init (mergeType:) - initWithMergeType:
Определяемый инициализаторВозвращает политику слияния, инициализированную с данным типом политики.
Объявление
Swift
init(mergeType
ty
: 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
объект, описывающий проблему.Возвращаемое значение
YES
true
если конфликты были разрешены успешно, иначеNO
false
.Обсуждение
При переопределении этого метода в подклассе необходимо обычно вызывать реализацию суперкласса в дополнение к выполнению собственных операций.
Оператор импорта
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;
Константы
-
NSErrorMergePolicy
NSErrorMergePolicy
Если существуют какие-либо конфликты слияния, эта политика заставляет сохранение перестать работать.
Это - политика по умолчанию для всех контекстов управляемого объекта.
В случае отказа метод сохранения возвращается с ошибкой с userInfo словарем, содержащим идентификаторы объектов объектов, имевших конфликты (
NSInsertedObjectsKey
,NSUpdatedObjectsKey
).Доступный в OS X v10.4 и позже.
-
NSMergeByPropertyStoreTrumpMergePolicy
NSMergeByPropertyStoreTrumpMergePolicy
Эта политика объединяет конфликты между версией персистентного хранилища объекта и текущей версией в памяти, давая приоритет внешним изменениям.
Слияние происходит отдельным свойством. Для свойств, измененных и во внешнем источнике и в памяти, внешние изменения превосходят в памяти.
Доступный в OS X v10.4 и позже.
-
NSMergeByPropertyObjectTrumpMergePolicy
NSMergeByPropertyObjectTrumpMergePolicy
Эта политика объединяет конфликты между версией персистентного хранилища объекта и текущей версией в памяти, давая приоритет изменениям в памяти.
Слияние происходит отдельным свойством. Для свойств, измененных и во внешнем источнике и в памяти, изменения в памяти превосходят внешние.
Доступный в OS X v10.4 и позже.
-
NSOverwriteMergePolicy
NSOverwriteMergePolicy
Эта политика перезаписывает состояние в персистентном хранилище для измененных объектов в конфликте.
Текущее состояние измененных объектов вызывается на персистентное хранилище.
Доступный в OS X v10.4 и позже.
-
NSRollbackMergePolicy
NSRollbackMergePolicy
Эта политика отбрасывает изменения состояния в памяти для объектов в конфликте.
Версия персистентного хранилища состояния объектов используется.
Доступный в 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;
Константы
-
ErrorMergePolicyType
NSErrorMergePolicyType
Указывает политику, заставляющую сохранение перестать работать, если существуют какие-либо конфликты слияния.
Доступный в OS X v10.7 и позже.
-
MergeByPropertyStoreTrumpMergePolicyType
NSMergeByPropertyStoreTrumpMergePolicyType
Указывает политику, что слияния конфликтуют между версией персистентного хранилища объекта и текущей версией в памяти, давая приоритет внешним изменениям.
Доступный в OS X v10.7 и позже.
-
MergeByPropertyObjectTrumpMergePolicyType
NSMergeByPropertyObjectTrumpMergePolicyType
Указывает политику, что слияния конфликтуют между версией персистентного хранилища объекта и текущей версией в памяти, давая приоритет изменениям в памяти.
Доступный в OS X v10.7 и позже.
-
OverwriteMergePolicyType
NSOverwriteMergePolicyType
Указывает политику, что перезаписи утверждают в персистентном хранилище для измененных объектов в конфликте.
Доступный в OS X v10.7 и позже.
-
RollbackMergePolicyType
NSRollbackMergePolicyType
Указывает политику, отбрасывающую изменения состояния в памяти для объектов в конфликте.
Доступный в OS X v10.7 и позже.
Оператор импорта
Objective C
@import CoreData;
Swift
import CoreData
Доступность
Доступный в OS X v10.7 и позже.
-