Jak działa .DeleteSelf naprawdę działa? Docs mówi:Atrybut CKReference .DeleteSelf nie ma żadnego efektu
Kiedy działanie obiektu odniesienia jest ustawiony na CKReferenceActionDeleteSelf, w celu odniesienia, to znaczy rekordu przechowywanych w odnośniku za recordID właściciela staje się właścicielem rekordu źródłowego. Usunięcie rekordu celu (właściciela) powoduje usunięcie wszystkich jego rekordów źródłowych.
ale mam wrażenie, że usunięcie celu nie zawsze spowoduje usunięcie źródła. I jest to dość denerwujące, gdy pozostaje w kontenerze, klient pobiera go i spodziewa się, że punkt odniesienia gdzieś się znajduje, ale cel nie istnieje podczas budowania fragmentu składnicy danych serwera na kliencie?
Jak traktujesz tę sprawę? Ignorujesz tego rodzaju zapisy? Lub okresowo sprawdzasz pamięć masową CloudKit, szukając uszkodzonych rekordów, aby je usunąć?
Czy zamiast usuwania rekordu lepiej jest ustawić atrybut, który jest w stanie usuniętym, ale zachować go w bazie danych?
powinien móc polegać na .DeleteSelf. Jeśli to nie zadziała, powinieneś utworzyć raport o błędzie pod adresem http://bugreport.apple.com Jeśli chcesz utworzyć obejście tego błędu i masz kontrolę nad tym, co dzieje się w momencie usuwania zapisz Myślę, że najlepiej byłoby ręcznie usunąć wszystkie powiązane rekordy w tym samym momencie. –
Obserwuję także sporadyczne zachowanie z .DeleteSelf –
Zaczynam używać tego problemu. Mam kilka tabel o relacji jeden do wielu dla tabeli głównej. W publicznej bazie danych dodaję rekord główny, a następnie kilka rekordów w innych tabelach. Jeśli wszystko to jest wykonywane przez jednego użytkownika, a żaden inny użytkownik nie uzyskuje dostępu do danych, usunięcie rekordu głównego spowoduje usunięcie wszystkich pozostałych rekordów zgodnie z oczekiwaniami. Ale gdy inny użytkownik uzyska dostęp do danych, kasowanie nie nastąpi, a tylko rekord główny zostanie usunięty. Wydaje się bezsensowne, jeśli nie możesz liczyć na tę funkcję. – rmaddy