2011-04-15 13 views
4

私はリモートXMLファイルからコンテンツを収集するいくつかのUITableViewを持っています。ときどきファイルが更新されますが、viewDidLoadメソッドでファイルを読み込むため、ビューは更新されません。iOS:リモートファイルの更新を確認する

私はviewDidAppearのチェックを行い、XMLファイルを再度ロードする必要があると仮定しています。しかし、ユーザーがそのビューをクリックするたびにロードする必要はありません。

これを行うにはどのような方法が最適ですか?どういうわけかWeb上のリモートファイルの更新日を確認できますか?または、更新した日付をアプリに保存してから、間隔を置いてチェックする必要がありますか?これを行うには、XMLファイルが更新されていることを知るために、これを行うのが好ましい方法が必要です。

ありがとうございました。

+0

すべてのアプリケーションには独自の要件があるため、「好ましい方法」があるかどうかはわかりません。これはデータのライブフィードですか、更新は必須ですか?それとも遅れるのですか?サーバーが提供するキャッシュ制御を使用できず、それに基づいてデータをリロードするタイミングを決定する理由はありますか? – joshpaul

答えて

0

私はあなたのバージョンが変更されているかどうかを確認するために必要なデータのみと非常に小さいオーバーヘッドを持っているページへのGET要求を行うことをお勧めします。 iOSアプリで

は、あなたが保存された最後のバージョンの値を格納し、あなたが引くこの小さなページに対してそれを確認してください。ページの値が大きい(新しい)場合は、完全なXMLファイルを取得します。

このバージョンの値は、更新された日時またはバージョン番号のいずれかです。私はOBJの-Cのコードをテストし、現時点ではMacではないですすることは簡単ではありませんが、ここにいくつかの擬似コードです:

int versionNumber; // can be a datetime as well 
... 
void pullXmlIfAvailable() { 
    int latestVersionNumber = parseVersionNumberFromPage(URLget("myurl.com/check.xml")).to_i(); 

    if (latestVersionNumber > versionNumber) 
     DataClass xml = parseDataFromLargerFile(URLget("myurl.com/bigfile.xml")); 
} 
0

はおそらく、あなたがあなたのアプリケーションがバックグラウンドにした権利としての新鮮なデータをロードすることができ(で検出されましたあなたのアプリケーションデリゲート)。

このためのオプション:

  • アプリのデリゲートクラスでデータオブジェクトを保持し、あなたのUITableViewを含むコントローラでそれを参照します。あなたのビューコントローラがviewDidAppearを呼び出すときには、UITableViewreloadDataに電話するだけです。
0

サーバーにバージョン番号または更新日時を問い合わせるのではなく、サーバーにリモート(クライアントベース)バージョンのバージョン番号または更新日時を通知してください。

あなたは既に(A)の最近のバージョンを持っている場合、サーバーはその後、決定したり、新しいもの(B)が必要な場合:

0

他の回答が既にカバーしています。

もう1つの考慮すべき点は、データが最後に更新されたときに表示され、すぐに更新されるようにユーザーに通知する方法を提供するため、最近のtableviewアプリで非常に一般的な「プル・トゥ・リフレッシュ」のメタファを使用することです。

はかなりまっすぐ進む、それを実装しますいくつかのライブラリのためのiPhone Pull Down Refresh like Tweetie参照してください。

0

アプリケーションから簡単なリクエスト(多分タイマーイベント)を送信する必要があります。これにより、サーバーに更新についての問い合わせが行われます。サーバー上のコンテンツが更新された場合、アプリケーションでコンテンツをリロードする必要があります。
アプリケーションのサーバーおよび最新のコンテンツ更新時間の変更時間を追跡できます。

+0

@Nic Hubbard、答えがあなたの問題を解決すればそれを受け入れることができますか? – zakhej

関連する問題