2010-12-29 12 views
3

Ich habe eine iPad App, die Core Data für die Datenspeicherung verwendet. Ich möchte die Dateifreigabe in iTunes aktivieren und möchte nicht, dass die Benutzer die .sqlite-Datei löschen oder ändern können.Core Data und iTunes File Sharing - Verschieben/Verstecken der .sqlite Datei beim App Update?

Kann ich die Datei in ein anderes verstecktes Verzeichnis verschieben?

Alternativ könnte die Datei schreibgeschützt gemacht werden? Ich hätte nichts dagegen, wenn Benutzer Zugriff auf die Datei haben, solange sie nicht geändert werden können.

Ich vermute, es gibt eine triviale Lösung, die mir im Moment entgeht.

+0

Sie möchten das NSLibraryDirectory verwenden. Siehe diese Antwort für weitere Informationen: http://stackoverflow.com/questions/1567134/how-can-i-get-a-writable-path-on-the-iphone/1567147#1567147 –

+0

Danke, das hilft sehr. Ich denke, ich bin sehr verwirrt darüber, wie man die Datei aus dem Documents-Verzeichnis bewegt. Die Migration selbst scheint trivial zu sein (verschieben Sie einfach die Datei, bevor Sie den persistenten Speicher im App-Delegaten erstellen? Dann suchen Sie beim Start nach einer gültigen Datei an jedem Speicherort? – Eric

Antwort

2

Sie möchten den Hauptdatenspeicher in einem der recommended directories speichern. Wenn Sie möchten, können Sie Ihren Datenspeicher für Benutzer über die Dateifreigabe im Dokumentenverzeichnis zugänglich machen, indem Sie ihn dort kopieren. Es gibt keine Möglichkeit, den Benutzer daran zu hindern, eine Datei oder ein Verzeichnis (über die iTunes Dateifreigabe) im Dokumentenverzeichnis zu überschreiben oder zu löschen.

+0

Sie möchten * Ihre * Datenbank nicht in den Caches speichern Verzeichnis: Das Betriebssystem kann seinen Inhalt jederzeit löschen.Zusätzlich wird es nicht gesichert, wenn also der Benutzer sein Gerät wiederherstellen muss (oder ersetzen muss, oder was auch immer), wird die Datenbank definitiv weg sein Das Bibliotheksverzeichnis Siehe meinen Kommentar zu der Frage –

+0

Die Dokumentation, die ich oben verlinkt habe, impliziert, dass das Bibliotheksverzeichnis nicht verwendet werden kann, obwohl es möglicherweise besser ist, das Anwendungsunterstützungsverzeichnis zu verwenden.In der Dokumentation heißt es: "Sie können NSSearchPathForDirectoriesInDomains mit aufrufen einen anderen Domänenmaskenparameter als NSUserDomainMask oder eine andere Verzeichniskonstante als die in Tabelle 3-1, aber die Anwendung kann nicht in den zurückgegebenen Verzeichnispfad schreiben Ich habe nicht versucht, direkt in den Bibliotheksordner zu schreiben, aber ich erwarte, dass ich nicht in der Lage bin? Ich werde meine Antwort generischer und offener machen. – slycrel

+0

Toll, danke für das Update. Sie können tatsächlich in das Bibliotheksverzeichnis auf dem Gerät schreiben. Mit NSApplicationSupportDirectory können Sie recht haben, ich habe es nicht ausprobiert, aber es klingt angemessen und ist in der Liste. –