【问题标题】:Core Data, CloudKit - Failed to find matching objectIDs for CKRecordID核心数据,CloudKit - 无法为 CKRecordID 找到匹配的 objectID
【发布时间】:2022-07-05 06:07:55
【问题描述】:

我正在使用 CloudKit 跨设备同步我的应用程序。

起初,一切似乎都按预期工作,但过了一段时间,CloudKit 似乎陷入了无限循环,调试控制台抛出大量这些消息(连续数千条消息):

CoreData:调试:CoreData+CloudKit:-[PFCloudKitSerializer applyUpdatedRecords:deletedRecordIDs:toStore:inManagedObjectContext:onlyUpdatingAttributes:andRelationships:madeChanges:error:]_block_invoke(1018): 未能为 <CKRecordID: 0x60000330c000 找到匹配的 objectID; 记录名称=1E0972A7-D9DD-44A7-88F9-3AD13B32A330, zoneID=com.apple.coredata.cloudkit.zone:默认所有者> / <CKRecordID: 0x60000330c020; 记录名称=EE02B981-E54D-486B-95A1-AC0839671C27, zoneID=com.apple.coredata.cloudkit.zone:默认所有者> 待定 关系:0xe92e2f9c5a6d27e2 x-coredata://75AFDFFD-8E35-4B9F-AA61-C477073B435B/NSCKImportPendingRelationship/p8626

我想最重要的部分是

未能为 <CKRecordID: 0x60000330c000 找到匹配的 objectID; ...

它只是标准的 CloudKit 实现,没有任何特殊的自定义代码,因此我不知道从哪里开始调查。

这是正常的预期行为吗? 我觉得这大大减慢了我的 CloudKit 同步。

    标签: swift xcode core-data icloud cloudkit


    【解决方案1】:

    我刚刚发现了我这边的问题。在进一步调查期间,我意识到这些消息与其他涉及一个特定实体的消息一起出现。我从一个 json 文件中预加载核心数据,其中包含一些最终会随时间变化的数据。

    每次应用程序启动时,出于开发目的,我都会从 json 文件中更新我的预加载数据 事实证明,我在那次更新期间创建了新对象来运行比较,然后忘记删除不必要的对象。

    由于该更新过程创建了数百个对象,因此加起来非常快。它们现在毫无目的地漂浮在核心数据中。 CloudKit 必须同步它们。

    然而,最后它仍然是非常小的数据,为什么这会导致那些神秘的调试消息和数小时的同步,对我来说仍然是一个谜。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2020-07-01
      相关资源
      最近更新 更多