Pracuję nad synchronizacją CloudKit w mojej aplikacji (model "Małe dane, wszystkie urządzenia", ze strefą niestandardową w prywatnej bazie danych).Co to jest clientChangeTokenData w CKModifyRecordsOperation?
CKModifyRecordsOperation
zawiera clientChangeTokenData
własność NSData
typu, który jest opisany w docs następująco:
Podczas modyfikacji zapisów z operacji FETCH określić dane klienta generowane Reklamowe stosując tę właściwość, aby wskazać, która wersja rekord, który ostatnio zmodyfikowałeś. Porównaj token danych, który podałeś, z tokenem danych w następnym pobraniu rekordu, aby potwierdzić, że serwer pomyślnie odebrał ostatnie żądanie zmodyfikowania urządzenia.
Nie rozumiem, dlaczego powinienem zawracać sobie głowę, biorąc pod uwagę, że przy każdym żądaniu, otrzymuję blok ukończenia, który mówi mi, czy serwer pomyślnie otrzymał moją prośbę. Dlaczego muszę ręcznie porównywać token klienta?
Czy podanie numeru clientChangeTokenData
jest wymagane do prawidłowego obchodzenia się z moim przypadkiem użycia? Śledzę zmiany danych lokalnych i pcham wszystko w kolejce po każdej zmianie danych. Zdalne zmiany są śledzone poprzez subskrypcję strefy.
Jeśli jest to wymagane, w jaki sposób wygenerować ten token poprawnie, biorąc pod uwagę, że mam wszystkie rodzaje zmian rekordów w moim CKModifyRecordsOperation
(moje cele wykorzystania API dla operacji wsadowych). Jaki jest tutaj ogólny przepływ pracy?
Dziękuję.
"KlientChangeTokenData" wydaje się być zerowe z bloków zakończenia "CKModifyRecordsOperation'. Czy jest to coś, co my (programiści) musimy wygenerować i przekazać do operacji przed dodaniem jej do kolejki operacji? To nie jest jasne. –
Należy sprawdzić klucz o nazwie recordChangeTag Jest on automatycznie generowany przez CloudKit –
Ustawiasz clientChangeTokenData podczas modyfikacji. Następnie sprawdza się, czy pasuje do zakończenia synchronizacji, np. CKFetchRecordZoneChangesOperation. Dlaczego chciałbyś to zrobić ... Nie jestem jeszcze pewien. – malhal