Używam MagicalRecord do opracowania aplikacji na iPada, a ostatnio po przejściu do sklepu z automatyczną migracją występują pewne problemy. Potrzebuję zsynchronizować plik .db z jednego urządzenia na drugi, więc wszystkie dane muszą być w pliku .db, ale wygląda na to, że włączony jest tryb dzienników WAL (domyślny tryb automatycznej migracji sklepów) ważne, w jaki sposób zapisuję, zachowuje zmiany tylko w plikach .db-wal lub .db-shm. Przełączyłem się do normalnego sklepu sqlite i wszystko działało dobrze. Tak więc, moje pytanie brzmi, czy przy włączonym rejestrowaniu WAL, czy muszę zrobić coś specjalnego, aby rzeczywiście uzyskać Core Data, aby zapisać do głównej bazy danych, czy też będę musiał go wyłączyć?Tryb Core Data WAL nie zmienia się na .db, tylko .db-wal i .db-shm
Odpowiedz
Zmiana trybu dziennika. W końcu masz Magical Record source. Zmień tryb dziennika SQLite na DELETE
, a tryb dziennika zostanie usunięty po każdej transakcji. Wyłączenie czatu jest naprawdę złym pomysłem, nie rób tego. Ale używanie innego trybu powinno być w porządku.
Core Data nie oferuje żadnego interfejsu API do manipulowania dziennikiem po otwarciu magazynu trwałego. SQLite to szczegół implementacji, a Core Data nie ujawnia wewnętrznych szczegółów SQLite. Najbliższym parametrem, który można uzyskać, jest parametr options
podczas konfigurowania stosu danych podstawowych, w którym można zmienić tryb dziennika (i zmienić go w MR).
Plik -wal
jest częścią bazy danych; musisz zsynchronizować go z plikiem .db
.
Można również skopiować dane do głównego pliku bazy danych, wykonując checkpoint.
Podczas korzystania z Core Data nie masz dostępu do bezpośredniego dojścia SQLite, więc nie ma sposobu na ręczne wykonanie punktu kontrolnego (lub użycie jakiegokolwiek wywołania 'sqlite3_ *'). –
Ok, myślę, że to zrobię. Po prostu znajdź najlepszy sposób na zapisanie moich zmian w MagicalRecord za pomocą CocoaPods. Dzięki! – Wizecoder