2

我正在编写一个 RSS feeder 并使用 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];

现在我正在尝试使用上面相同的代码添加另一个要解析的网站,但我需要在不同的 URL 上执行不同的操作

我正在实现委托功能:

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

问题是我不知道调用了哪个网站,我只得到了数据。

如何确定连接解析到哪个 URL?

例如在:

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

我可以检查来自的输入,NSString但在上述功能中我不能。NSURL URLNSURLResponse

4

1 回答 1

2

如果你实现了这两个委托方法,你不应该先收到后一个通知吗?如果是这样,您可以将 URL 字符串与实例变量中的 NSURLConnection(假定每个站点不同)相关联,并在之后获取数据时使用它。我通常会建议使用字典,尽管您不能将连接用作 NS(Mutable)Dictionary 中的键,因为它不符合 NSCopying。您可以使用 URL 字符串作为键,但这会使查找复杂化。也许是一对数组?

更重要的是,为什么要从头开始编写 RSS 阅读器?在 10.5+ 上,您可以使用 PubSub.framework 为您完成工作。这个框架可以处理各种奇怪的格式和无效的 XML,确实可以为您节省大量时间。也许它非常适合您尝试做的事情?

于 2009-11-21T16:48:16.213 回答