問題タブ [ckmodifyrecordsoperation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - CKModifyRecordsOperation の clientChangeTokenData とは何ですか?
アプリで CloudKit 同期に取り組んでいます (プライベート データベースにカスタム ゾーンを使用する「Tiny data, all devices」モデル)。
CKModifyRecordsOperation
ドキュメントで次のように説明されているタイプclientChangeTokenData
のプロパティが含まれています。NSData
フェッチ操作からレコードを変更する場合、このプロパティを使用してクライアント生成データ トークンを指定し、最後に変更したレコードのバージョンを示します。指定したデータ トークンを次のレコード フェッチのデータ トークンと比較して、サーバーがデバイスの最後の変更要求を正常に受信したことを確認します。
リクエストごとに、サーバーがリクエストを正常に受信したかどうかを示す完了ブロックを取得することを考えると、なぜわざわざする必要があるのか わかりません。このクライアント トークンを手動で比較する必要があるのはなぜですか?
clientChangeTokenData
ユースケースを正しく処理するには指定が必要ですか? ローカル データの変更を追跡し、データが変更されるたびにすべてをキューにプッシュします。リモートの変更は、ゾーン サブスクリプションによって追跡されます。
必要な場合、すべての種類のレコードの変更がある場合、このトークンを正しく生成するにはどうすればよいですかCKModifyRecordsOperation
(API の使用はバッチ操作を目的としています)。ここでの一般的なワークフローは何ですか?
ありがとうございました。
ios - レコード CKRecordID をサーバーに保存中にエラーが発生しました: レコードをタイプ 'X' から 'Y' に更新する試みは無効です
複数のテーブルのレコードをプライベート クラウド データベースのデフォルト ゾーンに保存するために使用CKModifyRecordsOperation
していますが、テーブル 'X' を除いて常に以下のエラーが返されます。
レコードをサーバーに保存中にエラーが発生しました: タイプ 'X' から 'Y' へのレコードの更新は無効です
詳細error.userInfo
:
{
CKErrorDescription = "レコード CKRecordID の保存中にエラーが発生しました: 0x7fd7a3d4c0c0; 1:(_defaultZone: defaultOwner ) をサーバーに送信しました: レコードをタイプ 'X' から 'Y' に更新する試みは無効です";
ContainerID = "iCloud.com...";
NSDebugDescription = "CKInternalErrorDomain: 2006";
NSLocalizedDescription = "レコードをサーバーに保存中にエラーが発生しました: タイプ 'X' から 'Y' へのレコードの更新は無効です";
NSUnderlyingError = "CKError 0x7fa0d250c4e0: \"無効な引数\" (2006); サーバー メッセージ = \"タイプ 'X' から 'Y' へのレコードの更新の試みが無効です\"; uuid = E2E...D1E; コンテナー ID = \ "iCloud.com...\"";
RequestUUID = "E2E...
errorKey = ck1rosofi;
}
関連するコード スニペット: