質問

私がiPhoneアプリでデータソースとしてのsqliteを使用しています。私は、アプリケーションのアップグレードに関する二つの質問を持っています。

1)のデータは、非トランザクションのすべてのconfig /です。意味、それは読み取り専用です。私は/更新設定データを追加すると、私はアプリのアップグレードを発行します。ユーザーが更新iPhoneアプリを取得すると、元のGETをアンインストールしますか?その場合は、新しいDBの設定データが展開されますので、私は大丈夫ですよ。それがない場合、どのように私はデータを交換するのですか?

2)のデータは、configおよびトランザクションです。ユーザーを意味することは、DBにデータを保存することができます。アプリの新バージョンへのユーザーのアップグレードは、私は彼らの既存のデータを維持するが、すべての設定データを交換したいとき。私はこれを達成するために、アプリ内に保存されたINSERTやUPDATEスクリプトを持っている必要があるだろう推測しています。それについて移動するための効率的な方法は何ですか?

役に立ちましたか?

解決

cdespinosaは、シナリオ#1十分に説明しているので、私は2位に取り組むでしょう。

私はまだiPhoneでこれを行っていないが、デスクトップ環境でこれを処理するための最も簡単な方法は、別のデータベースに構成データを維持することです。あなたはかなり簡単に複数のデータベースに接続することができます。おそらく変更できるデータベースであるべき、メインのデータベースを開いて起動します。そして、このようになりますsqlite3_exec文を、ATTACHます:

ATTACH 'filepath' AS config;

その時から、あなたはこのような何かを行うことができます:

SELECT * FROM UserTableName;
SELECT * FROM config.ConfigurationTableName;

あなたが構成データベースに書き込む場合、アプリケーションは、署名チェックを失敗し、起動しないことが私の理解だ、とSQLiteのバージョンは、iPhoneに付属の読み取り専用のフラグをサポートしていないのに十分古いです。このような理由から、あなたのバンドルに代わり1のコピーをサンドボックスに構成データベースファイルをコピーして開く必要があります。

(あなたは、もちろん、SQLを使用して、別のデータベースから値をコピーすることができます。しかし、あなたはすでにあなたのサンドボックスに構成データベース全体をコピーしている...あなたがする必要があります場合は...その後それはちょうどです余分なステップ。ただ、添付してください。)

私は他の誰かが詳細を提供することができます願っています。 :)

他のヒント

ユーザーがアプリをアップグレードする場合は、

、古いアプリケーションバンドルがアンインストールされ、新しいアプリケーションバンドルがインストールされていますが、アプリケーションバンドルに関連付けられたユーザデータはそのままです。

だからあなたの選択肢は)a)のアプリケーションバンドルにデータを残して(それが自動的に置換されます)またはb)一方的に最初の実行上のユーザデータ領域にコピー(あなたが意図的にアップグレード時にそれを取り替えるでしょうになっていますます。

私はsqliteの-知識がある人に#2を残しておきますが、あなたはそれはあなたが実際にやっていることだ場合、「sqliteの」タグの代わりに「mysqlの」タグを使用したい場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top