use*_*951 8 conflict core-data
NSMergeByPropertyObjectTrumpMergePolicy并且NSOverwriteMergePolicy在一件事情上是一样的.该属性会覆盖商店中的属性.
那么它们之间有什么不同呢?在我可以想到的所有情况下,无论持久性存储中的那个是否已经改变,该属性都会覆盖持久性存储.
还有什么是冲突?
我认为冲突只是意味着数据不同.这是否意味着核心数据最初设计为一旦数据写入就无法更新?
如果冲突不仅仅是"数据不同",那么NSOverwriteMergePolicy和之间的区别是NSErrorMergePolicy什么?
在这两种情况下,仅仅数据差异无论如何都不是冲突,因此不存在冲突.
Tom*_*ton 12
这是否意味着核心数据最初设计为一旦数据写入就无法更新?
不,如果是这样的话会没用多少,不是吗?
还有什么是冲突?
在Core Data中,当您有多个托管对象上下文(MOC)访问同一数据存储时,可能会发生冲突.这在多线程应用程序中很常见.每个MOC可以独立保存更改.但是您希望在所有线程中保持一致的数据视图,因此可以通知已在一个MOC上保存了更改并将这些更改合并到不同的上下文中.这使上下文保持同步.
但是,如果您尝试将更改合并到MOC中,并且对同一数据进行了不同的未保存更改,该怎么办?就像,两个MOC在同一个实例上更改了相同的属性,并将它们更改为不同的值.这是发生冲突的时候.如果您尝试合并更改,结果将取决于MOC的合并策略.默认情况下它使用NSErrorMergePolicy,这意味着合并失败,您的代码需要以某种方式解决和解决冲突.有几种内置的合并策略会对冲突应用不同的自动解决方案.
四种内置分辨率方案优先考虑磁盘更改或内存更改.它们在如何处理非冲突的内存中更改方面也有所不同.例如,NSMergeByPropertyStoreTrumpMergePolicy更新内存中任何冲突的更改以匹配来自其他MOC的更改,但保留非冲突的更改.NSRollbackMergePolicy不同之处在于,它完全丢弃了内存中的更改,即使它们与其他MOC的新更改不冲突.如果没有任何内置方案似乎正确,您也可以创建自己的合并策略.
在这两种情况下,仅仅数据差异无论如何都不是冲突,因此不存在冲突.
肯定存在冲突.这是一种非常常见的情况.
| 归档时间: |
|
| 查看次数: |
1681 次 |
| 最近记录: |