8

CloudKitのオプションを使用しDeleteSelfた経験のある人はいますCKReferenceか? ドキュメントから得たものは次のとおりです。

自己削除

参照レコードの削除アクション。レコードを削除すると、そのレコードを指す CKReference オブジェクトを含むすべてのレコードも削除されます。追加のレコードを削除すると、さらに多くのレコードがカスケード削除される可能性があります。削除はデフォルト ゾーンでは非同期に行われ、カスタム ゾーンでは即時に行われます。

CKReferenceだから私はこれをテストしてきましたCloudKit Dashboard. アプリでそれを行うときはいつでも、次のように参照を作成します。

let reference:CKReference = CKReference(recordID: savedFriend.friendID, action: CKReferenceAction.DeleteSelf)

ダッシュボードでチェックされたオプションが表示されているため、それ自体を削除するように割り当てられていることがわかります。 セルフチェックオフを削除

ダッシュボードを使用して参照されているレコードを手動で削除するか、プログラムで削除するようにアプリを設定すると、レコードは消えますが、参照は決して削除されないため、何か間違ったことをしているに違いありません。たぶん待つべきだと思いましたが、最終的にはそうなるでしょうが、数時間後、それ自体が削除されたはずのようにチェックオフされたままです. これが機能すると想定してコードの一部を設計したので、ちょっとイライラします。今では、CKRecordもう存在しない を見つけようとしてリソースを浪費しているアプリを作成できます。これに頼ってはいけませんか?私が得ることができる助けやアドバイスに感謝します。

更新 ~ 2016 年 4 月 7 日

私は銃を飛ばしてここに戻ってきて、問題が解決したという更新を投稿しました. 問題が再発しないとは完全に確信していなかったので、昨夜、安心を求めました. データベース全体でそれらを参照するために、 5 つの異なるオブジェクトをCKRecords作成し、さまざまな異なるオブジェクトを作成しました。CKReference次にCKReferenceAction.DeleteSelf、各参照にオプションを設定しました (2 つはダッシュボードから手動で試し、残りの 3 つはプログラムで行いました)。とにかく、私は数分待ってから、参照されたレコードを削除しました... 10分後、参照はすべてまだ存在していました. 私はさらに5〜10分待ったが、彼らはまだそこにいたので、朝までには絶対にいなくなっているはずだと思って寝ましたよね?違う!12時間後、CKReferenceエントリはまだそこにあります参照されたレコードはまだなくなっています。私は間違いなく頭を悩ませています。まるでバグのようですCloudKit。また、ダッシュボードに奇妙な動作が見られたことにも言及しておく必要があります。過去 4 日間ほど、左下隅に一貫して「開発データの再インデックス化」と表示されていました。例を次に示します。 再インデックス通知

それがこの問題を引き起こしている可能性はありますか? この問題に精通していて、これを解決する方法を知っている人はいますか? 任意の提案をいただければ幸いです。Appleにバグレポートを提出しました。

4

1 に答える 1

0

これはおそらく許可の問題です。

カスケード削除は、レコードを削除するユーザーが、削除する必要があるすべてのレコードに対する「書き込み」権限を持っている場合にのみ機能します。したがって、CloudKit ダッシュボードでは、カスケード削除は、開発者の iCloud アカウントで作成されたレコードに対してのみ機能します。

そこで私の答えを見てください:https://stackoverflow.com/a/38606004/6643055

于 2016-07-27T08:34:42.457 に答える