Nie można po prostu umieścić bazy danych SQLite w kontenerze iCloud, ponieważ może ulec uszkodzeniu. (Gdy modyfikujesz bazę danych SQLite, pliki tymczasowe są tworzone i mają zmienioną nazwę, więc jeśli proces synchronizacji rozpocznie kopiowanie tych plików, otrzymasz uszkodzoną bazę danych.)
Jeśli nie chcesz przenosić do danych podstawowych, możesz zrobić to, co robi Core Data: przechowuj bazę danych w folderze dokumentów i przechowuj dziennik transakcji w kontenerze iCould. Za każdym razem, gdy zmieniasz bazę danych, dodajesz te zmiany do pliku dziennika, dzięki czemu możesz odtwarzać je i wprowadzać równoważne zmiany na innych urządzeniach.
Jest to dość skomplikowane: poza uzyskaniem logiki log/reply w prawo, będziesz chciał połączyć nadmiarowe zmiany i okresowo zwijać log do kompletnej kopii bazy danych.
Być może łatwiej będzie Ci opracować rozwiązanie, jeśli możesz wykorzystać wiedzę o swojej aplikacji (Core Data musi rozwiązać problem w ogólnym przypadku). Na przykład można zapisać faktury jako oddzielne pliki w kontenerze chmurki (tekst, lista właściwości, XML, JSON, cokolwiek), zapisując je jako zmienione bazy danych i importując je tylko wtedy, gdy system powie, że zostały utworzone lub zmienione.
Podsumowując, należy wybrać migrację do Core Data lub samodzielne napisanie rozwiązania synchronizacji. To, który z nich jest najlepszy, zależy od szczegółowych danych o twojej aplikacji.
Gdzie jabłko to powiedziało? – mamcx
Właśnie edytowałem mój post, aby dołączyć źródło – kris