0

私は運が悪かった私の一般的な質問を推測します:アプリが更新された直後に呼び出されるメソッドはありますか?

詳細: 私の状況では、バンドルに plist があります。ユーザーが最初に plist にアクセスしようとすると、Documents ディレクトリを確認し、そこにない場合はバンドルからコピーします。これにより、ユーザーは必要に応じてデータを上書きできます。ただし、アプリを更新するたびに、Documents ディレクトリにあるユーザーの既存の plistを上書きする新しい plist をバンドルに含める必要があります。明らかに、アプリが実行されるたびにではなく、アプリの更新後にのみこれが発生することを望んでいます。これを行う簡単な方法はありますか?

4

3 に答える 3

2

更新する plist にバンドル バージョン (CFBundleVersion) を追加し、アプリの info.plist に保存されているバンドル バージョンに応じて動的にロードできます。

したがって、バージョン 1.3 の場合、your_plist.1.3.plist をロードします。

NSString *plistString = [NSString stringWithFormat:@"your_plist_%@", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]];

[[NSBundle mainBundle] pathForResource:plistString ofType:@"plist"];
于 2012-06-22T13:53:46.117 に答える
2

できることは、現在実行中のアプリ リビジョン (リリースごとにインクリメントする定数、または CFBundleVersion の値のみ) を使用して NSUserDefaults にキーを設定することです。アプリを開いたときに、リビジョンが現在のリビジョンよりも古いかどうかを簡単に確認してから、plist を上書きし、保存されているリビジョンを更新して、同じバージョンを後で起動しても plist が上書きされないようにします。その後の起動で、リビジョンが同じ値である場合は、アプリケーションの残りの部分に進みます

于 2012-06-22T13:55:04.340 に答える
0

コード内のplistの名前を変更することもできます。そうすれば、新しいplistがdocumentsフォルダーにコピーされます。古いものを削除するコードを追加することもできます:)

于 2013-01-14T02:34:18.943 に答える