首页 > 解决方案 > 何时调用 recordZoneWithIDWasPurgedBlock 和 recordZoneWithIDWasDeletedBlock?

问题描述

CKFetchDatabaseChangesOperationrecordZoneWithIDWasPurgedBlockrecordZoneWithIDWasDeletedBlock块。我的假设是,当用户删除与应用程序关联的所有 iCloud 数据时,会调用清除块,而当我手动删除区域时,则会调用删除块。

然而,在我使用 CloudKit 几周的经验中,从来没有调用过,我尝试了很多方法来触发任何一个块,但它从未发生过。CKFetchRecordZoneChangesOperation相反,这些场景似乎是通过我后来制作的错误来处理的。我得到一个CKError.Code.changeTokenExpired区域是否已被删除,以及CKError.Code.userDeletedZone用户是否自己删除了 iCloud 数据。

通过错误处理这些场景对我来说很好且易于管理,但让我想知道这些块何时被调用?我是否应该像处理已删除/清除区域的错误一样处理它们?

标签: iosicloudcloudkit

解决方案


我自己的一个错误导致自定义区域始终在应用程序启动时创建,这显然永远不会触发删除块并使所有更改令牌无效。

对于那些有类似问题的人,我有最令人沮丧的建议:检查你的代码!确保在获取数据库更改之前没有创建自定义区域。


推荐阅读