問題タブ [ckerror]
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 - CKQueryOperation でランダムに「No operations present in request」というエラーが発生しました
以下のコード スニペットを使用して、Cloud Server からいくつかのレコードを取得しようとしています。ほとんどの場合、エラーなしでレコードを返します。
しかし、時々、それはエラーを返します:
{
NSDebugDescription = "CKInternalErrorDomain: 1009";
NSLocalizedDescription = "リクエストに操作がありません";
NSUnderlyingError = "エラー Domain=CKInternalErrorDomain Code=1009 \"No operations present in request\" UserInfo={NSLocalizedDescription=No operations present in request}";
}
エラーコードを確認しましたがCKErrorInvalidArguments
、ドキュメントが言ったように
不正なクライアント リクエスト (不正なレコード グラフ、不正な述語)
このエラーがどのように発生し、このエラーを処理する方法がわかりCKErrorNetworkUnavailable
ません。エラーとは異なり、時間間隔の後にリクエストを送信するCKErrorRetryAfterKey
価値はありません。error.userInfo
ところで、このエラーが発生すると、すべての操作でこのエラーが発生し、レコードが返されません。
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;
}
関連するコード スニペット:
swift - Swift / CloudKit: レコードが変更された後、アップロードは "Service Record Changed" をトリガーします
クラウド キットのレコードに CKReference を追加しようとしていますが、この試行によって "Service Record Changed" がトリガーされ続けます。私のprintlnが示したコンソールメッセージ(コンソールメッセージと以下のコード)から、参照が0のレコードをアップロードしています。次に、参照を添付すると、参照が1のレコードをアップロードしようとしています。次に、エラーが発生します。
私が理解しているように、参照リストの値が変更されたため、「サービスレコードが変更されました」はトリガーされるべきではありません (レコードには余分なフィールド全体があります)。私は開発モードですが、参照リストが空の場合、最初のレコードのアップロードにはフィールドが含まれていないため、参照リストのキー値フィールドを手動で作成しました (空の配列をアップロードすると別のエラーが発生します)。
コンソール メッセージの後に、関連性の高い順にコードを含めます (ほとんどの println を確認できます)。プロジェクト全体は github にあり、必要に応じてリンクしたり、コードを追加したりできます。
関連するコンソール:
CrewParticipant からのコード:
アップロードが発生する一般的なコード (他のいくつかのクラスで機能します):
swift - Xcode 8 ベータ 6 に更新した後、関連する列挙型から CKErrorCode と .rawValue が失われました
error: NSError
Xcode 7.3 には、(引数として渡した後) 次のように機能する switch ステートメントがありました。
Xcode 8 beta 6 で Swift 3.0 に移行した後、CKErrorCode が認識されないというエラーが発生し始めました。私はまだクラウドをインポートしていますが、移行により列挙型が小文字になり、次のように変更しようとしました:
しかし、それもエラーのようです (ベータ版は私のシステムではバグがあるようで、エラーが消えたり再発したりしているため、今コーディングしているとわかりにくく、私のシステムだけかもしれませんが、コンパイルすると持続します)。https://swift.org/migration-guide/#known-migration-issuesとhttps://swift.org/migration-guide/をスキャンしてきましたが、まだ何も見つかりませんでした。 (ベータ版なのでSwift 3を無視していると思います)私の以前の構文はコーシャだと言っているようです。
誰かがこれについて正しい方向に私を向けることができますか? 列挙型は負けました.rawValue
か? 列挙型は変更されたようですが、何をすべきかについてのドキュメントを見つけるのに苦労しています。これらの列挙型のケースを認識する CKErrorCode に代わるものはありますか? クラウド キットのエラー処理がそれよりも大幅に変更されたとは言わないでください :) よろしくお願いします。
ios - CKPartialErrorsByItemIDKey によるエラーの回復
を取得.partialFailure
CKError
した後、ID と対応するエラーを回復しようとしましたが、問題が発生しています...
今私は使用しています:
私も次のことを試しました:
と:
最初の印刷物はコンソールでこれを示しています (開いているタグを左に切り替えて、html として解釈されないようにしました):
私がドキュメントから理解しているように、私は辞書から、そしてメソッドからNSDictionary<CKRecordID, (CK)Error>
戻ってくるはずです。最初のプリントに基づくと、この状況ではメソッドは機能していませんが、key は CKRecordID と CKError の辞書を提供しています。2 番目のプリントに到達しない理由がわかりません。userInfo
CKPartialErrorsByItemIDKey
NSDictionary<NSObject, Error>
partialErrorsByItemID
swift - サーバー レコードの CKAsset には fileURL が含まれておらず、nil をチェックすることさえできません
の保存ポリシーをCKAsset
使用して (単に JPG 画像) を含むレコードを保存するときに、同期の競合をテストしています。エラーが発生しています。これにより、保存しようとしたレコードや現在のサーバー バージョンなど、競合の解決に役立つ情報が返されます。1つ目は 2つ目は です。CKModifyRecordsOperation
.IfServerRecordUnchanged
CKErrorCode.ServerRecordChanged
CKError
CKRecord
error.userInfo[CKRecordChangedErrorClientRecordKey]
error.userInfo[CKRecordChangedErrorServerRecordKey]
私の問題は、次のコードでサーバー レコードの CKAsset にアクセスしようとしていることです。
これがどのように可能かわかりません。しかし、さらに調査した後、クライアントとサーバーの CKRecords を出力しましたが、サーバーの CKRecords には「パス」プロパティがありません。
client CKAsset...myPhoto (変更) -> CKAsset: 0x7b960d90; path=~/tmp/BF185B2C-7A39-4730-9530-9797E843243Aphoto, size=373959, uploadRank=0, uploadReceipt=A92Eg1qoyPG7yrg3, UUID=3C2D5DC8-4FF5-4A81-853B-395FC1C59862, referenceSignature=<012fd149 200fc600 617e3907 88763e3e 5002abbf 5b> 、フラグ = アップロード済み、ラップされた暗号化キー =、署名 = <0134a297 38d52f5f 9275bfba fce5b1a8 3d6b9692 d3>
サーバー CKAsset...myPhoto = CKAsset: 0x7be700d0; referenceSignature=<015337bd 84409893 7c014f46 36248d27 ce911dc3 7a>, size=373959, uploadRank=0, UUID=DF5D2EB4-033C-49A2-AF52-6055B5A44106, wrappedEncryptionKey=<767e7cfd d1e62110 32119ee9 f6f026b3 5bcf0cc3 8053a4de>, signature=<0134a297 38d52f5f 9275bfba fce5b1a8 3d6b9692 d3>
path=~/tmp/C706423B-A3E8-4051-A9B3-483C718BFBF5photo
サーバー 1 から がどのように欠落しているかに注意してください。誰でもこれを説明できますか?それを修正するために、サーバー レコードから CKAsset に触れないようにしています。少なくともnilをチェックできるようにしたいと思います。他の誰かに役立つ場合に備えて、これを公開したかったのです。
ios - IOS: インターネット接続がない場合、fetchRecordZoneChangesCompletionBlock が呼び出されない
アプリで CloudKit を使用しています。iCloud からすべての変更を取得するには、操作 CKFetchRecordZoneChangesOperation を使用します。アクティブなインターネット接続がないときにこの操作を追加すると、fetchRecordZoneChangesCompletionBlock が呼び出されることはありません。
この完了ブロックがエラー CKError.networkUnavailable で呼び出されることを期待しています。
Swift3を使用しています。
私はおそらくいくつかのことを誤解しています。誰かが私が欠けているものを説明できますか?