2012-05-07 10 views
0

私はいくつかのデータといくつかの画像を取得するためにxmlを使用するiphoneアプリケーションを作成しています。もともと、これらのファイルはアプリケーションバンドルに入っています。しかし、私はWebサービスから更新を得るために自分のアプリケーションを作りたいと思っています。だから私は新しいXMLと新しい画像をダウンロードすると言うことができます。iphoneアプリケーション内のいくつかのファイルを更新する

どこで保存しますか?私はアプリケーションの "キャッシュ"の権利でそれらを保存することができると思いますか?

しかし、このリソースがキャッシュに存在するかどうかをアプリケーションで確認し、そのリソースをロードします。それ以外の場合はアプリケーションバンドルにロードしますか?

のiOS 4.3を使用するが、それはそれが簡単に私たちは5

答えて

1

に行くことができます場合は、にファイルを保存して、ドキュメントディレクトリからそれをロードするためにNSFileManagerを使用する必要があります。 [UIImage imageWithContentsOfFile:fullPath];は(あなたのドキュメントディレクトリにあなたのイメージへのパスが含まれているとをフルパスがNSStringのである)nilを返します

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

場合、そのイメージがある:実際にあなたが必要とするすべての情報が含まれている次のリンクを、チェックアウト存在しないので、バンドルからデフォルトイメージをロードする必要があります。

あなたはこれがあなたのバンドルであなたのファイルへのパスを返します[NSBundle mainbundle] pathForResource:@"yourFileNameHere" ofType:@"yourTypeHere"] [使用して、デフォルトのバンドルファイルにアクセスすることができますし、あなただけの[UIImage imageWithContentsOfFile:]

この例では、唯一のUIImageに適用されるにそれを渡すことができますが、簡単にそれを適応させることができます他のクラスを使用する。私はUIImageの例が説明のために十分であると思う。

0

おそらく、バージョン管理体系を作成したいと思うでしょう。アプリケーションが(または定期的に)Webサービスを起動して、非常に安価な呼び出しを行った後、どのバージョンにあるかを尋ねます。あなたはあなたが持っているバージョンを知っているでしょう(plistで書くか、フォルダ構造にバージョン番号をつけてください)。別のオプションはpushing a notificationです。

あなたが考える必要があることは、アプリが新しいデータセットを取得することにどのように反応するかということです。あなたは起動時にのみそれを行うことができますが、それはWeb呼び出しにバインドしている場合は、起動の経験をブロックする可能性があります。もう1つの選択肢は、アプリが開いている間にデータセットを変更できるようにすることです。 NSNotificationCenterを使用して、データが変更されたことをビューとコントローラに通知するモデルを作成できます。私はおそらく、移行に役立つ記憶域(フォルダ単位)もバージョンアップする予定です。あなたはバージョンのような設定を保存するドキュメントディレクトリへの書き込み、およびplistsするASIHttpRequestNSFileManagerのようなものを使用してWeb要求を行うことができますか、については

関連する問題