2017-06-17 15 views
1

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検索で参考になります。誰もこれに遭遇していますか?

答えて

1

この文脈で「継続」の意味についてもっと深く考え、Appleの例を詳しく掘り下げてみると、私は、サーバーの変更トークンの変数を、異なるフェッチ変更段階fetchDatabaseChangesおよびfetchZoneChangesの方法による。データベースの変更トークンとゾーン変更トークン(各ゾーンには独自のものがある)を追跡する変数を追加した後、「無効な同期継続データ」エラーが消え、サーバーから返された変更されたレコードが表示されます。

+0

私は同じ問題がありました。すべてのデータベース(プライベート、共有、パブリック)に独自の変更トークンとすべてのゾーン(デフォルト、...)があることを正しく理解していますか? Appleのサンプルコードでこれらの変更を適用すると、上記のエラーは消えますが、クラウド・デーモンがクラッシュし、次のようなエラーメッセージが表示されます: '[LogFacilityCK]操作B6D7CD06813D5F2Eの接続エラー:Error Domain = NSCocoaErrorDomain Code = 4097" com.apple.clouddという名前のサービスへの接続 "UserInfo = {NSDebugDescription = com.apple.clouddという名前のサービスへの接続}'適切なサンプルコードを共有できますか? – Daniel

+0

こんにちは、@ダニエル、はい、これは私がこの練習問題から理解していることです。各データベースとゾーンには独自の変更トークンがあります。私はfetchDatabaseChanges/fetchZoneChangesこれらのLogFacilityCKエラーがサーバー側の変更によって生成されたリモートの通知を受信した後に表示されませんが、私は周り遊んでいて、もし私がフェッチしたい場合、アプリの開始時に変更されます。あなたのコードでもこれが起こっていますか?そうであれば、サーバー上で新しい変更を加えずに変更をフェッチすると、cloudKit側のエラーが発生する可能性があります。 – CodePlumber

+0

このエラーは、サーバー側で何も変更せずにフェッチすることで発生します。アプリをバックグラウンドに入れてから、サーバー側でいくつかの変更を加えてから、fetchChanges呼び出しをトリガーするアプリケーションを起動します。この場合、アプリはエラーなく変更を正常に取得しました。サーバー側を変更せずにこのエクササイズをやり直すと、再度4097エラーが発生します。 – CodePlumber

関連する問題