2009-06-28 20 views
0

私はsqliteを使用しているアプリケーションを持っています。最初の起動時に、NSDocumentDirectoryに.dbファイルをコピーします(私はそれを更新することができます)。それ以降のバージョンでは、このデータベースに新しいデータを追加する予定です。どのようにすべてのアプリケーションの更新(ただし、すべてのアプリケーションを起動すると)このDBの最新のコピーがNSDocumentDirectoryにコピーされることを確認することができますか?既存のアプリケーションへの更新

おかげ

答えて

2

-Konstantin私は新しいビルドでインクリメントという定数を持って、kDatabaseVersionを言います。起動時

、私は次のことを確認します。

  • DBは、ドキュメントディレクトリに存在していますか?そうでない場合は、コピーします。これはおそらく、最初の打ち上げが行われたことを意味します。

  • DBが存在する場合は、同じキーを持つNSUserDefaultsエントリに対して定数からバージョンを確認します。定数が大きい場合は、データベースをコピーします。そうでない場合は、しないでください。それに応じてNSUserDefaultsを更新してください。

もちろん、データベースにもユーザーのデータが含まれている場合は、そのデータを新しいデータストアに移行する方法を検討する必要があります。コアデータを使用している場合は、複数の永続ストアを使用してユーザーデータとデフォルトデータを分離することも考えられます。

0

アプリケーションにデータベースのバージョン番号を保存します。 アプリケーションが起動すると、データベースがドキュメントディレクトリに存在するかどうかを確認します。そうでない場合は、ドキュメントにコピーします。ディレクトリ。 データベースが既に存在する場合は、データベーステーブルに格納されている番号とアプリケーションのデータベースバージョン番号を比較してください。数字が等しい場合はすべて正常です。そうでない場合は、既存のデータベースを「アップグレード」する必要があります(データベーススキーマなどの変更)。そのため、あなたのアプリのすべてのバージョンでデータベースをアップグレードすることができます。すべての必要なロジックを含む単純な関数 "CheckForDatabaseUpdate"をコーディングします。バージョン番号をパラメータとして "UpgradeToDatabaseVersion"関数を作成します。この関数は、あるバージョンから別のバージョンへのデータベーススキーマのアップグレードを処理します。