Xcode 8.3でiOS 10を使用していて、AppleのCloud Kit Quick Start文書に従ってクラウドデータのローカルキャッシュを管理していました。プライベート・データベース・ゾーン内のデータを変更しましたが、私はいつも次のエラーを取得するゾーンの変更フェッチしようとするとされたとき:CloudKit CKError「無効な引数」と「同期の継続が間違っている」
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">
}>
を私はの説明を見つけることができないとして、「悪い同期継続データは」かなり混乱していますこのエラーは、Appleのドキュメントにあるか、Google検索で参考になります。誰もこれに遭遇していますか?
私は同じ問題がありました。すべてのデータベース(プライベート、共有、パブリック)に独自の変更トークンとすべてのゾーン(デフォルト、...)があることを正しく理解していますか? Appleのサンプルコードでこれらの変更を適用すると、上記のエラーは消えますが、クラウド・デーモンがクラッシュし、次のようなエラーメッセージが表示されます: '[LogFacilityCK]操作B6D7CD06813D5F2Eの接続エラー:Error Domain = NSCocoaErrorDomain Code = 4097" com.apple.clouddという名前のサービスへの接続 "UserInfo = {NSDebugDescription = com.apple.clouddという名前のサービスへの接続}'適切なサンプルコードを共有できますか? – Daniel
こんにちは、@ダニエル、はい、これは私がこの練習問題から理解していることです。各データベースとゾーンには独自の変更トークンがあります。私はfetchDatabaseChanges/fetchZoneChangesこれらのLogFacilityCKエラーがサーバー側の変更によって生成されたリモートの通知を受信した後に表示されませんが、私は周り遊んでいて、もし私がフェッチしたい場合、アプリの開始時に変更されます。あなたのコードでもこれが起こっていますか?そうであれば、サーバー上で新しい変更を加えずに変更をフェッチすると、cloudKit側のエラーが発生する可能性があります。 – CodePlumber
このエラーは、サーバー側で何も変更せずにフェッチすることで発生します。アプリをバックグラウンドに入れてから、サーバー側でいくつかの変更を加えてから、fetchChanges呼び出しをトリガーするアプリケーションを起動します。この場合、アプリはエラーなく変更を正常に取得しました。サーバー側を変更せずにこのエクササイズをやり直すと、再度4097エラーが発生します。 – CodePlumber