Core Data Store, der im App-Paket enthalten ist

7

Ich kann keine klare Beschreibung dieser Schritte in Apple-Dokumenten finden ...

  1. Ich habe ein xcdatamodeld in meinem xcode-Projekt
  2. Beim Start parst meine App eine XML (Projektressource), um den Core Data Store (SQLLite)
  3. zu füllen
  4. Während der Laufzeit meiner App füge ich Daten dieses Speichers hinzu, entferne sie und aktualisiere sie.

Nun möchte ich diesen schweren XML-Parsing-Prozess auf dem Gerät beenden und direkt einen Store mit den erforderlichen Daten einfügen.

Ich habe einige Fragen dazu:

  • Kann ich ein Geschäft mit einer OS X-App füllen und dieses Geschäft dann in mein XCode-iOs-Projekt aufnehmen?
  • Mein Shop erscheint nicht in Xcode. Tatsächlich wird es zur Laufzeit erstellt. Wie kann ich einen Shop im Projekt hinzufügen und mit meinem xcdatamodell verknüpfen?
  • Ich habe gelesen, dass dies verhindern wird, dass mein Geschäft beschreibbar ist ... Ich denke, ich muss es zum Startzeitpunkt an den richtigen Ort kopieren (das Lernprogramm Core Data Utility ist dafür eine große Hilfe). Habe ich recht?

Danke für deine Hinweise. URL oder andere SO Fragen wären wirklich zu schätzen!

Kheraud

    
iwalktheline 12.04.2011, 09:28
quelle

3 Antworten

14

Sie können die Speicherdatei (sqlite db die meiste Zeit) in Ihre App einfügen. Dann bearbeiten Sie in Ihrem App-Delegat den persistentStoreCoordinator gether merhod:

%Vor%     
rckoenes 12.04.2011, 09:46
quelle
10
  1. Schreiben Sie eine Dienstprogramm-App mit dem Datenmodell und den Klassen für die App. Verwenden Sie die Dienstprogramm-App, um aus den vom XML-Code bereitgestellten Daten einen permanenten Speicher zu generieren.
  2. Fügen Sie die Store-Datei wie jede andere Ressource
  3. dem App-Bundle hinzu
  4. Wählen Sie einen Ort im App-Verzeichnis aus, in dem der aktive Speicher gespeichert werden soll, z. das Bibliotheksverzeichnis.
  5. Nach dem Start muss die App prüfen, ob der Speicher im Verzeichnis vorhanden ist. Wenn dies nicht der Fall ist, sollte die App den Speicher mit den Standardmethoden von NSFileManger wie jede andere Datei aus dem App-Paket in das Verzeichnis kopieren. (Normalerweise müssen Sie dies nur beim ersten Erstellen des Geschäfts tun.)

Das ist alles, was wirklich dazu gehört.

    
TechZen 12.04.2011 20:33
quelle
6

Was Sie gerade machen (Popup beim ersten Start) ist die "empfohlene" Methode, einen Core Data Store zu füllen. Obwohl es ein bisschen hackisch ist, könntest du die Datenbank auf dem Gerät wie folgt säen:

  1. Starten Sie Ihre App im Simulator
  2. Machen Sie alles, was Sie tun müssen, damit die Simulator-App den Core Data-Speicher füllen kann
  3. Stoppen Sie die Simulator-App
  4. Navigieren Sie zum simulierten Ordner Dokumente (etwas wie ~/Library/Application Support/iPhone Simulator/4.3/Applications/335567A0-760D-48AF-BC05-7F0D9BD085B6/<app-name>.app/ )
  5. Finden Sie die SQLite-Datenbank (sie hat den Namen, den Sie bei der Initialisierung von Core Data angegeben haben)
  6. Kopieren Sie diese Datenbank in Ihr Projekt und fügen Sie sie zum Kopieren als Ressource hinzu
  7. Fügen Sie der Methode application:didFinishLaunchingWithOptions: Code hinzu, damit beim ersten Start die Datenbank vom schreibgeschützten Ressourcenverzeichnis in das Dokumentenverzeichnis der App kopiert wird. Natürlich müssen Sie dies vor der Initialisierung von Core Data tun.

Je nachdem, was genau Sie in Ihrer Datenbank speichern, können Sie jedoch Probleme mit großen und kleinen Fehlern oder andere Inkompatibilitäten entdecken. Um den Ansatz ein wenig sicherer zu machen, könnten Sie die Simulator-Datenbank ( splite3 databasefile .dump >dumpfile ) auf Ihrem Mac ablegen, dann die Dump-Datei in Ihr Projekt einbinden (wie oben) und den Dump in Ihrer App beim ersten Start ablegen (Zeile lesen). by-line und übergibt die SQL-Anweisungen an die SQLite API).

    
odrm 12.04.2011 09:48
quelle