我正在使用NSPersistentContainer
创建我的核心数据堆栈。 documentation表示我们应该使用它的viewContext
属性来获取主NSManagedObjectContext
,但viewContext
是只读的。此上下文的默认NSMergePolicy
是多少?是否有可能改变它?例如:
storeContainer.viewContext.mergePolicy = NSMergePolicy.mergeByPropertyObjectTrump
如果我以这种方式设置Xcode,Xcode不会抱怨,但我怀疑这是否实际上是在改变策略,因为上下文是只读的。
编辑:作为参考,我了解到您可以使用以下方法对其进行测试:
let type = (defaultContext.mergePolicy as! NSMergePolicy).mergeType
if type == NSMergePolicyType.mergeByPropertyObjectTrumpMergePolicyType {
print("Has propertyObjectTrump type")
}
答案 0 :(得分:2)
始终可以更改托管对象上下文的合并策略。它是可写的,你不能在初始化时设置它,所以你在创建后设置它。默认值可能是NSErrorMergePolicy
,因为这通常是默认值,但您可以将其更改为您需要的任何内容。
答案 1 :(得分:2)
context属性是只读的,这意味着你不能替换上下文本身,但是它的合并策略属性不是,这意味着你可以替换只读上下文的策略。