批量删除导致 NSMergeConflict 核心数据
Posted
技术标签:
【中文标题】批量删除导致 NSMergeConflict 核心数据【英文标题】:batchdelete causing NSMergeConflict coredata 【发布时间】:2016-09-18 02:18:24 【问题描述】:我只在一个线程上操作 coredata。基本上我有一个消息应用程序,我正在尝试批量删除消息......所以这有效..但是一旦我再次开始发送消息......我收到这个错误
这是我用来删除消息的:
let fetchRequest = NSFetchRequest(entityName: "Mesages")
fetchRequest.predicate = NSPredicate(format: "user.id = %@", friendID)
let batchDeleteRequest = NSBatchDeleteRequest(fetchRequest: fetchRequest)
do
try context.executeRequest(batchDeleteRequest)
context.refreshAllObjects()
catch
错误域=NSCocoaErrorDomain 代码=133020 "(null)" UserInfo=conflictList=( “NSManagedObject (0x6080000ae520) 的 NSMergeConflict (0x610000264140),objectID 为 '0xd000000006640002',oldVersion = 1 和 newVersion = 旧对象快照 = \n fromID = 300147143696943;\n isSender\ = 0;\n 状态 = \"\"; n 文本 = Ggg;\n 时间戳 = \"2016-09-18 02:13:30 +0000\";\n toID = \"\";\n 用户 = \"0xd000000000640000 \";\n", “NSManagedObject (0x6000000adb60) 的 NSMergeConflict (0x610000265ac0),objectID 为 '0xd000000006600002',oldVersion = 2 和 newVersion = 旧对象快照 = \n fromID = 300147143696943;\n isSender = 0;\n status = \"\"; n 文本 = Gg;\n 时间戳 = \"2016-09-18 02:09:41 +0000\";\n toID = \"\";\n 用户 = \"0xd000000000640000 \";\n" )
我不知道发生了什么,请有人帮忙
【问题讨论】:
您解决了这个问题吗?我面临同样的错误。 【参考方案1】:也许你应该在save()之前设置persistentContainer的viewContext的mergePolicy(NSPersistentCloudKitContainer),这样写:
yourContext.mergePolicy = NSMergeByPropertyStoreTrumpMergePolicy
或
yourContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
【讨论】:
以上是关于批量删除导致 NSMergeConflict 核心数据的主要内容,如果未能解决你的问题,请参考以下文章