NSPersistentContainer:viewContext的合并策略

时间:2017-01-04 19:02:53

标签: ios core-data

我正在使用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")
}

2 个答案:

答案 0 :(得分:2)

始终可以更改托管对象上下文的合并策略。它是可写的,你不能在初始化时设置它,所以你在创建后设置它。默认值可能是NSErrorMergePolicy,因为这通常是默认值,但您可以将其更改为您需要的任何内容。

答案 1 :(得分:2)

context属性是只读的,这意味着你不能替换上下文本身,但是它的合并策略属性不是,这意味着你可以替换只读上下文的策略。