批量删除导致 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 核心数据的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助诊断 NSMergeConflict 错误

目录下文件过多,导致无法批量删除

laravel 练习(学生表)

核心数据关系在删除后导致保存错误

由于删除数组而导致核心转储

MySQL增加索引导致主从同步延时更大的重现与分析