2009-05-29 11 views
14

Pracuję nad aplikacją Core Data (dla iPhone 3.0, choć nie sądzę, że to naprawdę robi różnicę) i będzie ona musiała być wysyłana z bazą danych "starter" wypełnioną danymi. Z SQLite, chciałbym, aby aplikacja skopiowała zapełnioną bazę danych z pakietu do katalogu dokumentów aplikacji przy pierwszym uruchomieniu, a następnie załadowała tę bazę danych - wszystkie informacje będą przychodzić wraz z nią i będziemy gotowi do pracy. Ale w przypadku Core Data nie jestem pewien, czy mogę po prostu zapisać sklep Persistent w pakiecie App i skopiować go, zanim Core Data zacznie działać. Czy spowoduje to problemy? Istnieje sporo początkowych danych, więc nie chcę pakować go w innym formacie i trzeba go analizować.Dostarczyć dane podstawowe dla aplikacji danych podstawowych?

+0

Witaj Zaph, mógłbyś to wyjaśnić? Sprawdzanie zmodyfikowanego stempla pliku Widzę, że plik jest zawsze modyfikowany niezależnie od rozszerzenia. Jak masz na myśli, że Xcode zmienia zawartość pliku? –

Odpowiedz

17

Tak, można skopiować ponad wstępnie wypełniony magazyn trwały.

Stworzyłem aplikację na Maca, która zapełnia sklep. Jest on kopiowany do mojego pakietu i na początku kopiowany do katalogu Docs. To działa dobrze. Powiedziano mi, że przykład z Core Data Books został opracowany w ten sam sposób.

Należy pamiętać, że nie oznacza to, że można po prostu skopiować na stary plik SQLite. Musi to być sklep z podstawowymi danymi, chociaż myślę, że rozumiesz to na podstawie twojego pytania.

+0

Czy myślisz, że programowanie zapełnienia magazynu trwałego w pierwszym uruchomieniu mojej aplikacji jest ok? Czy to nie sprawiłoby, że moja aplikacja znacznie się zmniejszy, skoro będę musiał na chwilę uwzględnić bazę danych SQLite? – leolobato

+1

Jeśli aplikacja może zrobić to szybko, bez wkurzania oczekującego użytkownika, wydaje się, że to dobry sposób na zrobienie tego. – Hunter

+1

Uważaj. O ile dane nie mogą być generowane algorytmicznie, wydaje się, że oszczędności wielkości plików uzyskane przez zapełnianie danych w środowisku wykonawczym zostałyby skompensowane przez ilość kodu wypełniającego dane, które należy uwzględnić w aplikacji. –

1

W rzeczywistości jest pewna sztuczka: musisz nazwać plik, który zamierzasz skopiować z rozszerzeniem innym niż ".sqlite", ".bin" zrobi. W przeciwnym razie Xcode zmieni zawartość pliku, gdy skopiuje go do aplikacji w fazie budowy i nie zostanie załadowany.

+0

Czy to nadal prawda? – Suragch

+0

Przepraszam, nie wiem. – zaph

Powiązane problemy