iOSダウンロード前にリモートファイルが更新をしているかどうかを確認してください
-
21-12-2019 - |
質問
これは二部の質問です。 NSXMLParserを使用してRSSフィードをダウンロードしています。
NSURL *url = [NSURL URLWithString:@"linktorssxml"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
.
リモートのヘッダーをリモートで読み取る方法があるかどうかは疑問に思って、最後の更新タイムスタンプをチェックして、パーサーコードを実行し、実際には変更があった場合にはXML全体を引いてください。
さらに、私が言ったように、これは二部の質問です。 外部からホストされているPlistと同じ考えを持っています。これは現在次のように呼び出されています。 -
_content = [[NSArray alloc] initWithContentsOfURL:[NSURL URLWithString:@"pathto.plist"]];
.
再び、最後の更新時間のヘッダーをリモートで確認する方法はあります。したがって、変更があった場合は完全なファイルをダウンロードするだけですか?
解決
はいですが、NSURLConnection
またはNSURLSession
を使用して、NSXMLParser
を求める代わりにデータをダウンロードする必要があります。
HTTPヘッダ(おそらく最後の変更日を含む)を取得して、必要なものを説明するためにNSMutableURLRequest
を使用することで入手できます。これはsetHTTPMethod:
という名前のメソッドを持ち、メソッドをHEAD
に設定できます。接続を行い、ヘッダーを取得し、次の方法を決定します。
XMLが非常に大きい場合は、おそらく最も効果的なアプローチではありません。ファイルが変更された場合は、入手するための2番目のネットワーク要求を実行する必要があります。ネットワーク要求は遅いので、それらを最小限に抑えるべきです。ほとんどの場合、ファイルを取得するだけで、NSURLConnection
またはNSURLSession
を使用しているのが期限切れになるでしょう。応答にはHTTPヘッダーが含まれているため、まだ日付を取得し、まだパーサーを実行するかどうかを決めることができます。