带有“不良同步继续数据”的CloudKit CKError“无效参数”

Cod*_*rew 5 ios cloudkit

我正在iOS 10上使用Xcode 8.3,并且遵循了Apple的Cloud Kit快速入门文档来维护云数据的本地缓存,并且当私有数据库区域中的数据发生更改时,我的设备能够接收推送通知,但是当尝试获取区域更改时,我总是遇到以下错误:

2017-06-17 11:58:11.376807-0400 MyApp[10694:5029263] received remote notification
2017-06-17 11:58:11.897402-0400 MyApp[10694:5031532] fetch database change completed
2017-06-17 11:58:11.897606-0400 MyApp[10694:5031532] zone deletions
2017-06-17 11:58:12.320908-0400 MyApp[10694:5031561] record zone fetch completed
Error fetching zone changes for private database: <CKError 0x170256620: "Invalid Arguments" (12/2006); server message = "Bad sync continuation data"; uuid = xxxxxxxx-EFD7-459D-xxxx-xxxxxxxxxxx; container ID = "iCloud.com.mycompany.MyApp">
2017-06-17 11:58:12.332247-0400 MyApp[10694:5031561] fetch record zone changes completed
Error fetching zone changes for private database: <CKError 0x174640150: "Partial Failure" (2/1011); "Couldn't fetch some items when fetching changes"; uuid = xxxxxxxx-EFD7-459D-xxxx-xxxxxxxxxxx; container ID = "iCloud.com.mycompany.MyApp"; partial errors: {
PrivateZone:__defaultOwner__ = <CKError 0x170254670: "Invalid Arguments" (12/2006); server message = "Bad sync continuation data">
}>
Run Code Online (Sandbox Code Playgroud)

由于我无法在Apple文档中找到此错误的解释,也无法在Google搜索中找到任何参考,因此“同步失败持续数据”非常混乱。有人遇到过吗?

Cod*_*rew 5

在仔细考虑了这种情况下的“继续”的含义,并深入研究了Apple示例之后,我意识到问题是,我只是为在不同的获取更改阶段返回的服务器更改令牌保留了一个变量,如fetchDatabaseChangesfetchZoneChanges方法所示。 。添加变量以跟踪数据库更改令牌和区域更改令牌(每个区域都有自己的变量)后,“错误同步继续数据”错误消失了,我可以看到服务器返回的更改记录。