jestem pobraniem db SQLite z internetu w moim app iPad. Jeśli piszę go zachodzącego atomically: YES
dysku nie mogę go używać od razu, bo mimo że plik istnieje, sqlite twierdzi, że tabele nie istnieją. Jeśli użyję atomically = NO
lub opóźnię otwarcie pliku kilka chwil, to nie mam tego problemu.NSData WriteToFile: atomowo: nie od razu zapisać plik
Chyba mógłbym go o to przez ustawienie atomically = NO
ale potem znowu tam jest jakaś gwarancja, że cała plik zostały zapisane na dysku zaraz po WriteToFile call? Do tej pory mój db nie jest duża, ale w końcu, plus ja nie wiem, jak długo czekać na innych urządzeniach.
Dokumentacja firmy Apple mówi, że ta metoda zwraca wartość YES
, jeśli operacja powiedzie się, ale oczywiście nie uwzględnia "opóźnienia" zapisania pliku.
Każda pomoc jest bardzo doceniana!
EDIT: widzę inni ludzie mają the same problem.
Znalazłem ten wątek przepełnienia stosu, który opisuje atomową zapisywanie pliku: http://stackoverflow.com/questions/2705076/difference-between-writing-to-file-atomically-and-not Co ja” Zgaduję, że próbujesz uzyskać dostęp do pliku, zanim system operacyjny zapisze go w magazynie stałym. Czy jest jakiś powód, dla którego absolutnie trzeba pisać atomowo? –
To było również moje przypuszczenie i próbuję wymyślić sposób obejścia tego. Powodem, dla którego muszę pisać atomowo, jest to, że jeśli z jakiegoś powodu coś się zawiesi, mój główny db zostanie uszkodzony, a moja aplikacja stanie się bezużyteczna. – Julian
Jak się masz pobieranie i pisanie? –