問題タブ [ckreference]
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.
objective-c - CloudKit 参照リストを変更する方法
ダッシュボードで CKRecord の Reference List 属性を問題なく変更できますが、プログラムで変更するにはどうすればよいですか?
現在、NSArrayとして変更しようとしています。エラーは発生しませんが、配列の内容は問題ありませんが、属性が設定されません。
また、参照リストに関するドキュメントは、よく隠されているか、存在しないかのいずれかです。
アイデアや提案に感謝します。
ios - CKReference オブジェクトから参照文字列を取得する方法
Books
&の 2 つのレコード タイプがありますAuthors
。本には 2 つの属性BookName(String)
&がありAuthorName(CKReference)
ます。Authors
1 つの属性がありますAuthorTitle(String)
。
私は次のように保存CKReference
します
CKReference
現在、テーブルに表示するために次のように取得しています
テーブルビュー セルでは、 のレコード ID が表示されAuthorName
ます。AuthorName
代わりに、文字列形式で表示したい。どうすれば入手できますか?
ios - CKReference .DeleteSelf 属性は効果がありません
.DeleteSelf は実際にどのように機能しますか? ドキュメントは次のように述べています。
参照オブジェクトのアクションが CKReferenceActionDeleteSelf に設定されている場合、参照のターゲット (つまり、参照の recordID プロパティに格納されているレコード) がソース レコードの所有者になります。ターゲット (所有者) レコードを削除すると、そのすべてのソース レコードが削除されます。
しかし、ターゲットを削除してもソースが削除されるとは限らないというのが私の印象です。そして、それがコンテナーに残っていて、クライアントがそれをダウンロードし、どこかへの参照ポイントを期待しているのに、クライアントでサーバー データ ストアのスライスを構築するときにターゲットが存在しない場合は、非常に面倒ですか?
このケースをどのように扱いますか?そういう記録は無視ですか?または、定期的に CloudKit ストレージを調べて、破損したレコードを探して削除しますか?
または、レコードを削除する代わりに、削除された状態にある属性を設定し、データベースに保持する方がよいでしょうか?
ios - CloudKit の CKReferenced レコードの数に制限はありますか?
連絡先のグループを CloudKit に保存しようとしていますが、単一のグループ レコードを CKReferenced するレコードの大規模なグループを作成しようとすると、エラーが返されます。
制限は約 700 レコード程度のようです。
他の誰かが同様の結果を見たことがありますか、または制限の存在 (または非存在) を確認できますか? ドキュメントや Google で何も見つかりません。
注: 送信するレコードを 400 以下のバッチに分割しています。これはハード リミットのようです。
nspredicate - CKReference に基づく述語を使用して CKQueryOperation を実行すると、すべての「所有レコード」が返されない
私のスキーマは次のとおりです
RecordType: OwnedEvents には、「Owner」という要素が含まれています。この Owner 要素は、「OwnedEvents」タイプの RecordType から作成された CKReference を指します。
N 個の OwnedEvents オブジェクトがすべて 1 つの Owner オブジェクトを指しています。
特定の Owner オブジェクトを指すすべてのレコードを取得するクエリを実行すると、場合によっては、そのオブジェクトを指すすべてのレコードが返されないことがわかります (ほとんどの場合、返されます)。また、完了ブロックでエラーを返しません。CloudKit ダッシュボードに移動すると、すべての OwnedEvents オブジェクトが同じ正しい Owner オブジェクトを指していることがわかります。取得に使用しているコードは以下のとおりです。
私の質問は次のとおりです。
この種の「サイレント」障害は予想されますか? つまり、これを特定して回復する必要がありますか? または、クエリで何か間違ったことをしていますか?
基準に一致するすべてのレコードが取得されない場合、クエリがエラーを返さなければならないと言う方法はありますか? (つまり、フェッチのアトミックバージョン..一致するレコードの予想数を事前に知るのは難しいため、そうではないと思いますが、フェッチまたはスキーマで指定できるものがあるかどうか疑問に思っていますフェッチ結果で予想されるレコードの最小数を示します)。
形式の述語を使用するフェッチと比較して、参照を使用して形成された述語を使用してフェッチする方が効率的ですか?
- 参照は同じレコード セット N1...N2 を指す
- つまり、参照ベースの検索が信頼できなくなる場合は、それをやめて力ずくのアプローチを取ることもできます。少なくとも後者では、エラーを特定する簡単な方法があります
使用したコード
ios - CKReference の CloudKit Delete Self オプションが機能しない
CloudKit
のオプションを使用しDeleteSelf
た経験のある人はいますCKReference
か? ドキュメントから得たものは次のとおりです。
自己削除
参照レコードの削除アクション。レコードを削除すると、そのレコードを指す CKReference オブジェクトを含むすべてのレコードも削除されます。追加のレコードを削除すると、さらに多くのレコードがカスケード削除される可能性があります。削除はデフォルト ゾーンでは非同期に行われ、カスタム ゾーンでは即時に行われます。
CKReference
だから私はこれをテストしてきましたCloudKit Dashboard
. アプリでそれを行うときはいつでも、次のように参照を作成します。
ダッシュボードでチェックされたオプションが表示されているため、それ自体を削除するように割り当てられていることがわかります。
ダッシュボードを使用して参照されているレコードを手動で削除するか、プログラムで削除するようにアプリを設定すると、レコードは消えますが、参照は決して削除されないため、何か間違ったことをしているに違いありません。たぶん待つべきだと思いましたが、最終的にはそうなるでしょうが、数時間後、それ自体が削除されたはずのようにチェックオフされたままです. これが機能すると想定してコードの一部を設計したので、ちょっとイライラします。今では、CKRecord
もう存在しない を見つけようとしてリソースを浪費しているアプリを作成できます。これに頼ってはいけませんか?私が得ることができる助けやアドバイスに感謝します。
更新 ~ 2016 年 4 月 7 日
私は銃を飛ばしてここに戻ってきて、問題が解決したという更新を投稿しました. 問題が再発しないとは完全に確信していなかったので、昨夜、安心を求めました. データベース全体でそれらを参照するために、 5 つの異なるオブジェクトをCKRecords
作成し、さまざまな異なるオブジェクトを作成しました。CKReference
次にCKReferenceAction.DeleteSelf
、各参照にオプションを設定しました (2 つはダッシュボードから手動で試し、残りの 3 つはプログラムで行いました)。とにかく、私は数分待ってから、参照されたレコードを削除しました... 10分後、参照はすべてまだ存在していました. 私はさらに5〜10分待ったが、彼らはまだそこにいたので、朝までには絶対にいなくなっているはずだと思って寝ましたよね?違う!12時間後、CKReference
エントリはまだそこにあります参照されたレコードはまだなくなっています。私は間違いなく頭を悩ませています。まるでバグのようですCloudKit
。また、ダッシュボードに奇妙な動作が見られたことにも言及しておく必要があります。過去 4 日間ほど、左下隅に一貫して「開発データの再インデックス化」と表示されていました。例を次に示します。
それがこの問題を引き起こしている可能性はありますか? この問題に精通していて、これを解決する方法を知っている人はいますか? 任意の提案をいただければ幸いです。Appleにバグレポートを提出しました。
ios - CKReference から CKReference オブジェクトをフェッチする
次のような属性を含む 3 つのレコード タイプがあります。
クライアント
ユーザー名: 文字列
ProfileImage : UIImage
コメント
ユーザー : クライアント リファレンス
メッセージ: 文字列
店
コメント : コメント参照リスト
Shop CKRecord オブジェクトからクライアントの Username と ProfileImage を取得できますか? このパスを実行できますか:
- ショップのレコードからコメント参照を取得する
- 見つかった各コメント参照からユーザー参照を取得します
- そして最後にショップレコードのコメント参照のユーザー参照からユーザー名とプロフィールを取得する
パスがある場合、これを行う最善の方法は何ですか?
ios - CKRecordID を CloudKit に保存する
CKRecordID
参照として CloudKit に保存する必要がある があります。ただし、保存しようとすると、次のエラーが発生します。
タイプ「CKRecordID?」の値を変換できません 期待される引数の型 'CKRecordValue?' に
currentlySelectedUser の宣言:
別の CKQuery での currentlySelectedUser の取得:
currentlySelectedUser の保存:
エラーはコードの 3 行目で発生します。
CKRecordID
これを別の CloudKit レコードの参照として保存するにはどうすればよいですか?