2011-08-08 3 views
0

書籍に似たすべての情報を格納しているSQLite DBを持つiPhoneアプリがあります。ユーザーはDBから情報を読み取るだけで、データの更新が許可されていないため、DBを更新しません。アップグレードがある場合は、DBとアプリケーションの両方のコンテンツが置き換えられます。私は知りたい:アプリを更新するときにSQLite DBのコンテンツを置き換えます

  1. 私はDBを完全に新しいもので上書きしたいので、アップグレードを処理する最良の方法は何ですか?
  2. 実際、私はリンゴによる審査待ちの新しいバージョンを手に入れました。私はこの問題を完全に逃しました。これが私の最初のiPhoneアプリケーションなので、私はこの状況を処理するために何ができるのか分かりません。誰も助けることができますか?
+0

データベースはどこに保存されていますか?アプリのバンドル内?または、最初のアプリの起動時にドキュメントまたはライブラリフォルダにコピーしますか?これは大きな問題のようには聞こえません。必要に応じて、アップロードされたバイナリを拒否して、解放されないようにすることができます。 – marcus

+0

Marcusでは、Recipeサンプルと同じ方法で処理され、最初のアプリの起動時にLibraryフォルダにコピーされます。 – Conway

+0

アップロードしたバイナリを拒否する必要がありますか? – Conway

答えて

1

私はあなたの質問を正しく読んでいないので、私はそれを言い換えるつもりです。

私はsqllite DBから読み込むアプリを、持っている、と私はアプリを更新するとき、私はデシベルも

右に更新されるようにしたいですか?もしそうなら、答えはここにあります。

Trying to overwrite sqlite database in iPhone app update

+0

sqlite dbは、アプリケーションリソースフォルダーに保存され、実行時に移入されます。レシピサンプルとまったく同じです – Conway

+0

ありがとうございます、私はあなたがリンクした投稿を行ってきました。ベンジャミンと同じように、私は同じ素朴な質問があります。 dbがプロジェクトに追加されている場合は、アプリケーションバンドル内にあることを意味しますか? – Conway

+0

最後に、最初の起動時に古いデータベースを削除し、新しいデータベースに置き換えることを選択します。できます。 – Conway

0

あなたはファイルのみin a couple subdirectories of the application’s home directoryを変更することができます。データベースファイルの場合は、Documentsディレクトリが必要です(既に起動していない場合は、アプリケーションのバンドルからコピーしてください)。次に安全置換を実行します(NSFileManagerを参照)。私はこの正確なことをMediBabbleにしています。

+0

実際には、Documentsディレクトリだけでなく、アプリケーションのホームディレクトリ内の*すべてのファイルを変更することができます。 – tidwall

+0

@jojaba:間違っていましたが、明らかにホームディレクトリのサブセットに過ぎません。http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/StandardBehaviors/StandardBehaviors.html –

関連する問題