我正在使用CloudKit跨设备同步我的应用程序。
起初一切似乎都如预期的那样工作,但过了一会儿,CloudKit似乎陷入了一个无休止的循环,调试控制台抛出了大量这样的消息(串行几千条):
CoreData: debug: CoreData+CloudKit: -[PFCloudKitSerializer . fapplyUpdatedRecords: deletedRecordIDs: toStore: inManagedObjectContext: onlyUpdatingAttributes:与关系:madeChanges:错误:]_block_invoke (1018):为CKRecordID: 0x60000330c000找到匹配的objectid失败;recordName = 1 e0972a7 d9dd - 44 a7 - 88 - f9 - 3 - ad13b32a330,zoneID = com.apple.coredata.cloudkit.zone:defaultOwner比;/& lt; CKRecordID: 0 x60000330c020;recordName = ee02b981 - e54d - 486 - b - 95 - a1 ac0839671c27zoneID = com.apple.coredata.cloudkit.zone:defaultOwner比;在等待关系:0 xe92e2f9c5a6d27e2x-coredata://75 afdffd-8e35-4b9f-aa61-c477073b435b/NSCKImportPendingRelationship/p8626
我想最重要的部分是
为
这只是标准的CloudKit实现,没有任何特殊的自定义代码,因此我不知道从哪里开始调查。
这是正常的,预期的行为吗?我觉得这让我的CloudKit同步速度变慢了很多。
我刚发现我这边有问题。在进一步的调查中,我意识到这些消息与其他消息一起指向一个特定的实体。我从json文件中预加载核心数据,其中一些数据最终会随时间变化。
出于开发目的,每次应用程序启动时,我都会从json文件中更新预加载的数据原来我创建新对象,更新运行期间比较后,忘记删除不必要的对象。
因为这个更新过程创建了几百个对象,所以加起来相当快。它们现在毫无目的地漂浮在核心数据中。CloudKit必须同步它们。
然而,最后它仍然是相当小的数据,为什么这会导致那些神秘的调试消息和数小时的同步,对我来说仍然是一个谜。