8

Core Data を使用して多くのデータを保持するアプリがアプリ ストアにあります。例外は画像の保存です。Documents ディレクトリのサブディレクトリに画像を保存し、その画像への NSURL 参照をコア データ ストアの適切なオブジェクト属性に保存します。

更新がアプリ ストアに送信されると、それらの画像が見つからないため、以前のバージョンのアプリで保存された参照を使用して表示されないことに気付きました。現在、テストに開発デバイスを使用しているため、開発アプリが使用するアプリケーションディレクトリ内のディレクトリがアプリストアが作成/使用しているものと異なるため、この問題が伝播するという問題があるのではないかと疑っています。アプリケーション内のアプリのアプリ ストア ディレクトリと、Xcode でバージョンをデバッグ中に作成されたディレクトリとの間に違いがあることに気付きました。そのため、コア データに保存されている URL は、間違ったアプリケーション フォルダを指しています。新しいバージョンがストアでリリースされると、古いバージョンのアプリをダウンロードできないため、これをデバッグするのはちょっと難しいです。

いくつか質問があります。同じアプリのバージョンをダウンロードするアプリケーション サブディレクトリが同じであることを保証できますか?

これらのリソースの場所を表す相対画像 URL または文字列を保存する必要がありますか、それとも絶対 URL になるものを保存しても問題ないでしょうか?

どうもありがとう、フェリペ

4

2 に答える 2

14

ファイルへの参照を保存するには、相対URLを使用する必要があります。絶対URLは、アプリの更新後に変更される可能性があります

アプリの更新中に保存されたファイル

ユーザーがアプリのアップデートをダウンロードすると、iTunesはそのアップデートを新しいアプリディレクトリにインストールします。次に、古いインストールを削除する前に、ユーザーのデータファイルを古いインストールから新しいアプリディレクトリに移動します。次のディレクトリ内のファイルは、更新プロセス中に保持されることが保証されています。

  • Application_Home / Documents
  • Application_Home / Library

他のユーザーディレクトリ内のファイルも移動される可能性がありますが、更新後にそれらが存在することに依存しないでください。

https://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html

サンドボックスに加えて、アプリケーションホームはユーザーホームでもあります。したがって、ユーザーの家への速記であるunixチルダを使用することができ~/Documentsます~/Library

-[NSString stringByAbbreviatingWithTildeInPath]フルパスを相対パスに変換するために使用します。そしてそれを。で逆にし-[NSString stringByExpandingTildeInPath]ます。

于 2012-03-07T21:48:11.693 に答える
0

あなたが探しているのは次のようなものだと思います:

NSString *appDocumentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
于 2012-03-07T21:40:46.760 に答える