2

RSS フィーダーを作成し、NSXMLParser を使用して XML ページを解析しています。すべてがうまく機能します。

これは、非同期接続を処理するコードです。

static NSString *feedURLString = @"http://www.example.com/data.xml";
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:feedURLString]];
feed = [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];

上記と同じコードを使用して解析する別の Web サイトを追加しようとしていますが、別の URL で別のアクションを実行する必要があります。

私はデリゲート関数を実装しています:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

問題は、どの Web サイトが呼び出されたかがわからないことです。データしか取得できませんでした。

接続が解決された URL を特定するにはどうすればよいですか?

たとえば、

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

からのNSStringをチェックできますが、上記の関数ではできません。NSURL URLNSURLResponse

4

1 に答える 1

2

両方のデリゲートメソッドを実装する場合、最初に後者の通知を受け取るべきではありませんか?その場合、インスタンス変数でURL文字列をNSURLConnection(サイトごとに異なると想定されます)に関連付けて、後でデータを取得するときに使用できます。NSCopyingに準拠していないため、NS(Mutable)Dictionaryのキーとして接続を使用することはできませんが、通常は辞書をお勧めします。URL文字列をキーとして使用できますが、検索が複雑になります。おそらくアレイのペア?

さらに重要なのは、なぜRSSリーダーを最初から作成するのでしょうか。10.5以降では、PubSub.frameworkを使用して作業を行うことができます。このフレームワークは、あらゆる種類の奇妙な形式と無効なXMLを処理し、時間を大幅に節約できます。多分それはあなたがやろうとしていることにぴったりですか?

于 2009-11-21T16:48:16.213 に答える