2011-08-09 10 views
6

Chcę zapewnić obsługę iCloud dla mojego opakowania wokół sqlite. Nie używa coredata.Jak włączyć obsługę iCloud dla sqlite?

Zastanawiam się, jak włączyć iCloud dla niego. Zawartość bazy danych jest cały czas zmieniana (dotyczy fakturowania). Ponadto, jeśli jest możliwe, aby mieć jakąś wersję, będzie świetnie.

Czy istnieje jakaś próbka, której mogę użyć, aby to zrobić?

Odpowiedz

6

Krótka odpowiedź brzmi: nie, konieczne będzie użycie Core Data, jak podejrzewasz. Apple stwierdził, że sqlite nie jest obsługiwany.

Edit: Sprawdź sekcję na iCloud that's now in the iOS Application Programming Guide pod Używanie iCloud w połączeniu z bazami danych

Używanie iCloud z bazą danych SQLite jest możliwe tylko wtedy, gdy aplikacja korzysta z danych Core zarządzanie tą bazą danych. Dostęp do plików na żywo w bazie danych w iCloud przy użyciu interfejsów SQLite nie jest obsługiwany i prawdopodobnie uszkodzi bazę danych. Można jednak utworzyć bazę danych opartą na bazach danych na SQLite, o ile wykonasz kilka dodatkowych kroków podczas konfigurowania struktur danych podstawowych w postaci . Można również nadal używać innych typów rdzeni Przechowywanie danych - czyli przechowywanie nie oparte na SQLite - bez specjalnych modyfikacji .

+0

Gdzie jabłko to powiedziało? – mamcx

+0

Właśnie edytowałem mój post, aby dołączyć źródło – kris

7

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.

Powiązane problemy