0

xml を使用していくつかのデータといくつかの画像を取得する 1 つの iPhone アプリケーションを作成しています。これらのファイルはもともとアプリケーション バンドルにあるとしましょう。しかし、Web サービスから更新を取得するアプリケーションを作成したいと考えています。では、新しい xml と新しい画像をダウンロードするとします。

それらをどこに保存しますか? それらをアプリケーションの「キャッシュ」に保存できると思いますよね?

しかし、このリソースがキャッシュに存在するかどうかをアプリケーションで確認してから、それをロードするにはどうすればよいですか?

iOS は 4.3 を使用しますが、それがより簡単になる場合は 5 に移行できます。

4

2 に答える 2

1

NSFileManager を使用してファイルを保存し、ドキュメント ディレクトリからロードする必要があります。実際に必要なすべての情報が含まれている次のリンクを確認してください。

http://www.friendlydeveloper.com/2010/02/using-nsfilemanager-to-save-an-image-to-or-loadremove-an-image-from-documents-directory-coding/

(ドキュメント ディレクトリ内の画像へのパスを含む NSString である fullPath ) が nil を返す場合[UIImage imageWithContentsOfFile:fullPath];、画像は存在しないため、バンドルからデフォルトの画像をロードする必要があります。

[ を使用してデフォルトのバンドル ファイルにアクセスできます。[NSBundle mainbundle] pathForResource:@"yourFileNameHere" ofType:@"yourTypeHere"]これにより、バンドル内のファイルへのパスが返され、それを渡すことができます。[UIImage imageWithContentsOfFile:]

この例は UIImage にのみ適用されますが、他のクラスを使用するように簡単に適応させることができます。UIImage の例は説明目的には十分だと思います。

于 2012-05-07T11:35:18.520 に答える
0

おそらく、バージョン管理スキームを作成したいと思うでしょう。アプリの起動後 (または定期的に)、非常に安価な呼び出しで Web サービスを呼び出して、バージョンを確認します。使用しているバージョンがわかります (plist に書き込むか、フォルダー構造にバージョン番号を含めます)。別のオプションは、通知をプッシュすることです。

次に考えなければならないことは、アプリが新しいデータ セットの取得にどのように反応するかです。起動時にのみ実行できますが、Web 呼び出しにバインドしている場合、起動エクスペリエンスがブロックされる可能性があります。もう 1 つのオプションは、アプリが開いている間にデータセットを変更できるようにすることです。NSNotificationCenterを使用して、データが変更されたことをビューとコントローラーに通知するモデルを作成できます。移行を支援するために、おそらくストレージも (フォルダーごとに) バージョン管理します。

方法については、 ASIHttpRequest、ドキュメントディレクトリに書き込むためのNSFileManager 、バージョンなどの設定を保存するためのplistsなどを使用して Web リクエストを作成できます。

于 2012-05-07T11:36:58.970 に答える