.DeleteSelfはどのように実際に動作しますか?ドキュメントは言う:参照オブジェクトのアクションが CKReferenceActionDeleteSelf、参照、参照のレコードIDソースレコードの所有者 プロパティが-なりに保存されている 記録であるのターゲットに設定されているCKReference .DeleteSelf属性は無効です
。ターゲット(所有者)レコードを削除すると、すべての ソースレコードが削除されます。
しかし、私の印象は、ターゲットを削除しても必ずソースが削除されるとは限りません。そして、それがコンテナに残っていると、クライアントがそれをダウンロードし、参照ポイントがどこかにあると期待しますが、クライアントにサーバーデータストアのスライスを構築するときにターゲットが存在しないと、
このケースをどのように扱いますか?あなたはそのようなレコードを無視しますか?または定期的にCloudKitストレージを検索し、破損したレコードを検索して削除しますか?
または、レコードを削除する代わりに、削除された状態の属性をデータベースに保存する方がよいでしょうか?
あなたは.DeleteSelfに頼ることができるはずです。うまくいかない場合は、http://bugreport.apple.comでバグレポートを作成する必要があります。このバグの回避策を作成したい場合や、レコードその同じ瞬間にすべての関連レコードを手動で削除するのが最善であると私は思っています。 –
また、.DeleteSelfで断続的な動作が見られます –
私はこの問題を抱えています。私はマスターテーブルと1対多の関係を持ついくつかのテーブルを持っています。パブリックデータベースでは、マスタレコードを追加してから、他のテーブルにレコードを追加します。これが1人のユーザーからすべて実行され、他のユーザーがデータにアクセスすることさえできない場合は、マスターレコードを削除すると、他のすべてのレコードが期待どおりに削除されます。しかし、いったん別のユーザーがデータにアクセスすると、カスケード削除は行われず、マスターレコードだけが削除されます。あなたがこの機能に頼ることができない場合は無意味に見えます。 – rmaddy