Przeczytałem wytyczne dotyczące przechowywania danych firmy Apple i jestem naprawdę zdezorientowany, gdzie powinienem przechowywać pliki bazy danych sqlite, które tworzę w mojej aplikacji. Chcę czytać z plików sqlite, nawet gdy aplikacja jest w trybie Offfline. Czytałem, że takie pliki powinny być przechowywane w Bibliotece/pamięciach podręcznych za pomocą zestawu flag "Nie twórz kopii zapasowych". Proszę zasugerować mi właściwe podejście do robienia tego samego.Czy powinienem napisać plik bazy danych sqlite do katalogu Documents lub Library/Caches?
Odpowiedz
Odpowiedź zależy od tego, jak pliki baz danych są tworzone:
According to the Data Storage Guidelines page:
tylko dokumenty i inne dane, które są generowane przez użytkowników, albo że nie może inaczej być odtworzone przez aplikację , należy przechowywać w katalogu/Documents i zostanie automatycznie skopiowany przez iCloud.
Dane, które można ponownie pobrać lub zregenerować, należy zapisać w katalogu/Library/Caches. Przykłady plików należy umieścić w katalogu pamięci podręcznej obejmują bazy danych plików pamięci podręcznej i treści do pobrania, takich jak używane przez magazyn, gazetę, i aplikacji map.
To wydaje mi się dość oczywiste: jeśli aplikacja programowo tworzy coś lub generuje dane, które chcesz zapisać, umieścić go w folderze „buforuje”. Jeśli jest to coś wyjątkowego, co sam klient generuje (poprzez wpisanie na klawiaturze lub coś, co ręcznie interweniował i zrobił), umieść go w "Dokumentach".
„nie zapasowa” oznacza, że pliki nigdy wysyłane do iCloud i jeśli zgubić, muszą być ponownie tworzone od podstaw (lub ponownie zainstalować).
To może ci pomóc. Kopiowanie bazy danych do katalogu dokumentów będzie wystarczająco dobre, Pliki w pakiecie są tylko do odczytu, W niektórych sytuacjach Jeśli chcesz zaktualizować w dowolnym momencie, lepszym sposobem jest najpierw skopiowanie bazy danych, jeśli nie istnieje w katalogu dokumentów.
Przykładowy kod do kopiowania bazy danych z dokumentami katalogu jest następujący:
-(void) checkAndCreateDatabase {
// Setup some globals
NSString *databaseName = @"AnimalDatabase.sql";
// Get the path to the documents directory and append the databaseName
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
// Check if the SQL database has already been saved to the users phone, if not then copy it over
BOOL success;
// Create a FileManager object, we will use this to check the status
// of the database and to copy it over if required
NSFileManager *fileManager = [NSFileManager defaultManager];
// Check if the database has already been created in the users filesystem
success = [fileManager fileExistsAtPath:databasePath];
// If the database already exists then return without doing anything
if(success) return;
// If not then proceed to copy the database from the application to the users filesystem
// Get the path to the database in the application package
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
// Copy the database from the package to the users filesystem
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
[fileManager release];
}
Można odwołać tę Tutorial Pliki, zawartość w dokumentach katalog jest czytać, tryb zapisu, dzięki czemu można odczytać zawartość z bazy danych.
- 1. Dodaj plik HTML do bazy danych SQLite
- 2. Czy mogę zaszyfrować hasło bazy danych SQLite?
- 3. iPhone Documents max rozmiar katalogu
- 4. Czy SQLite blokuje plik bazy danych podczas czytania?
- 5. Kiedy powinienem wywołać metodę close bazy danych SQLite w Androidzie
- 6. Jak podłączyć CakePHP do bazy danych SQLite?
- 7. Android: zamykanie bazy danych SQLite
- 8. Czy istnieje ograniczenie rozmiaru bazy danych SQLite?
- 9. połączenie bazy danych sqlite golang
- 10. Django: dynamiczny plik bazy danych
- 11. Maksymalna pojemność bazy danych SQLite
- 12. Schemat bazy danych Android Sqlite
- 13. Otwórz plik bazy danych sqlite wewnątrz symulatora iPhone'a?
- 14. Czy powinienem teraz napisać kodigniter?
- 15. Testowanie bazy danych SQLite Android
- 16. Co powinienem wybrać - JSON lub SQLite?
- 17. Szyfrowanie bazy danych SQLite w C#
- 18. Dostęp do bazy danych sqlite na urządzeniu z systemem Android
- 19. eksport danych z programu Excel do bazy danych sqlite
- 20. Powody korzystania czytelny bazy danych SQLite
- 21. bazy danych sqlite w języku perskim
- 22. Parsowanie pliku XML przechowywanego w katalogu Documents aplikacji iPhone'a
- 23. Tworzenie bazy danych w JDBC Sqlite
- 24. Budowanie bazy danych sqlite poza projektem Androida?
- 25. Sync bazy danych sqlite z mysql
- 26. Replikacja peer-to-peer bazy danych sqlite
- 27. plik bazy Sqlite3 przedłużenie
- 28. Ustawianie katalogu magazynu sqlite temp
- 29. Czy istnieje sposób aktualizacji bazy danych SQLITE za pomocą delt?
- 30. skutecznie uwolnienie SQLite bazy
Opracowałem aplikację w pełni statyczną. Przechowuję dane powyżej 4 mb. Bez tej zawartości aplikacja nie będzie działać. W moim przypadku, gdzie powinienem zapisać lokalną bazę danych (folder dokumentów lub folder biblioteki)? – Warrior
[Cóż, widzę, że już zadałeś to pytanie jako osobne pytanie] (http://stackoverflow.com/questions/16767861/where-to- save-the-local-db-created-for-iphone-app), więc albo ja (albo ktoś inny) pójdzie szukać odpowiedzi dla ciebie –
A co z nowymi rozszerzeniami i zegarkiem? –