一意の値を含み、別のレコード タイプへのターゲット参照オブジェクトとして機能するレコード タイプを作成しようとしています。たとえば、レコード タイプ - 映画には、ユーザーが送信した映画の一意のリストが含まれます。また、FavoriteMovies には、Users 参照と Movies 参照が含まれます。ユーザーは、既存の映画のリストから選択するか、新しい映画を追加できます。
この問題は、別のユーザーが同じ名前で新しいレコードを作成しているときに、新しい映画レコードを作成すると発生します (映画のリストを取得した後、新しいレコードを追加しようとする前)。2 つの新しいレコードは、recordID が異なる別のレコードと見なされます。これは、新しいものを保存すると、保存名を持つ映画のインスタンスが 2 つあることを意味します。
映画レコード タイプに対して [存在しない場合に保存] タイプの操作を実行する方法が見つかりません。クエリの completionBlock で保存することはできますが、これら 2 つのアクションは、一意性を保証するアトミック トランザクションにはなりません。私の知る限り、これは との連鎖CKQueryOperation
にも当てはまりますCKModifyRecordsOperation
。
単一のトランザクションに値が存在しない場合にのみレコードを挿入する方法はありますか?