我試圖創建包含唯一值的記錄類型,並且將作爲一個目標的參照物到另一個記錄類型。例如,記錄類型 - 電影將包含用戶提交的電影的唯一列表。 FavoriteMovies將包含用戶參考和電影參考。用戶可以從現有的電影列表中進行選擇,或向其中添加新的電影。CloudKit - 如何保存記錄如果NOT EXISTS
的問題發生,如果我創建一個新的電影紀錄,而另一個用戶創建了同名的新紀錄(之後我檢索到的電影列表,但在此之前我嘗試添加一個新的)。這兩條新記錄被視爲具有不同記錄ID的不同記錄。這意味着,一旦我保存了新的電影,就會有兩個電影的存檔名稱。
我無法找到執行保存如果NOT EXISTS操作類型的電影記錄類型的方式。我可以在查詢的completionBlock中進行保存,但這兩個操作不會是原子事務以保證唯一性。據我所知,鏈CKQueryOperation
與CKModifyRecordsOperation
也是這種情況。
是否有插入一條記錄只有當值不存在於一個單一的交易方式?
不幸的是,這並不適用於我。我正在創建一個新的movieRecord實例來添加到列表中。如果另一個用戶創建了一個具有相同名稱的記錄(在我檢索了電影列表之後,但在嘗試添加新電影之前),由於它們具有不同的recordID,因此它們被視爲不同的記錄。這意味着即使我的savePolicy設置爲IfServerRecordUnchanged,該操作也不會引發錯誤。相反,我會看到兩個具有相同名稱的不同記錄。 – Denis
明白了。如果你製作了movieRecord.recordID.recordName這個電影的名字,它會起作用。我有一個使用公共數據庫的類似用例,這就是我爲保持公共記錄的獨特性所做的。我對答案做了一個編輯,以說明這個假設。 –
好主意,這個工作會爲我做。謝謝! – Denis