core-data - 如何查找并删除在 Core Data/Cloud Kit 应用程序中创建 CDMR 同步请求的内容?

标签 core-data cloudkit

我的应用程序同时使用 Core Data 和 CloudKit。我总是收到这样的调试消息:

020-12-16 11:05:48.933716-0600 Prayer Sparks[13035:4347318] [error] error: CoreData+CloudKit: 
-[PFCloudKitCKQueryBackedImportWorkItem queryOperationFinishedWithCursor:error:completion:](105):
 <PFCloudKitCKQueryBackedImportWorkItem: 0x2829375c0 - 
<NSCloudKitMirroringImportRequest: 0x281697ea0> 
ACD62C39-CCBB-4FDE-BBBE-337C9725E759> { CDMR:nil }: 
Failed due to querying for an unknown record type (not fatal, 
schema needs to be initialized): <CKError 0x28165c420: 
"Unknown Item" (11/2003); server message = "{
  "recordTypeId" : "CDMR",
  "title" : "did not find record type"
}"; uuid = EAF05A49-2FB4-460B-A93D-DBFD9FF1E755; container ID = "iCloud.com.stevenhovater.Prayer-Sparks">

该调试消息的一个版本甚至以最低的调试反馈级别出现,大约每 5-15 秒出现一次。我的解释是,在后台,应用程序正在对公共(public)数据库的请求进行排队,以查询 CDMR 记录(云套件近似核心数据中关系的方式,如本文所述:https://developer.apple.com/documentation/coredata/mirroring_a_core_data_store_with_cloudkit/reading_cloudkit_records_for_core_data)

但是,我的应用程序在模型中没有任何关系。 它曾经一度确实如此,但我早已删除了它们。我怀疑模型在某个地方生成了一些东西来管理后台的关系,并且它作为工件卡在某个地方。自从这种关系存在以来,我已经清理和重建了大约一百次,并且也多次删除了应用程序的“派生数据”文件夹。我已重置 CloudKit 仪表板中的架构,并使用虚拟数据重新初始化它多次,但此消息仍然存在。

你知道罪魁祸首隐藏在哪里,以及如何摆脱它吗?

最佳答案

这里有同样的问题。这些消息已经出现了一段时间(只要我能忍受,就被忽略!)所以我无法准确指出消息开始出现的时间,但我最好的猜测是它们是在我将模型移动到的时间左右开始的。将私有(private)记录与公共(public)记录合并/合并 - NSManagedObject 和 CKRecords 处理关系的方式可能有所不同?

无论如何 - @Reinhard Männer 在 CloudKit 仪表板中创建空 CMDR 记录并将createdTimestamp、modifiedTimestamp 和 recordName 的索引设置为可查询的解决方案对我来说很有效。

我确实尝试在我的数据模型中创建虚拟相关实体,但它解决了任何问题,我怀疑是因为在我的情况下它们没有被初始化/推送到 CloudKit,所以服务器对它们一无所知。

相反,我放弃了所有这些,清理了一切,只是手动将空的 CMDR 记录添加到 CloudKit 仪表板中的架构中,将索引设置为可查询,瞧!成功了 - 最终,2 分钟的工作。

关于core-data - 如何查找并删除在 Core Data/Cloud Kit 应用程序中创建 CDMR 同步请求的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65328481/

相关文章:

ios - CloudKit modifyRecordsCompletionBlock 随机失败

ios - 如何通过索引属性从核心数据中获取对象?

ios - 'lock' 已弃用 : first deprecated in iOS 8. 0 - 使用 -performBlockAndWait: 代替 - iOS 核心数据警告

ios - swift 核心数据从一对多关系中获取对象

push-notification - 如何设置最小的CKSubscription?

ios - CKQueryOperation 可见性、取消和超时可能性

swift - 删除swift中核心数据过去保存的条目

ios - 由于代码生成核心数据问题,Swift 3 Xcode 8 无法存档应用程序

swift - 如何通过 lastModifiedUserRecordID 查询 CloudKit?

ios - CloudKit,远程通知和aps环境