如何区分委托方法中的NSURLConnections?

时间:2009-11-21 16:13:23

标签: cocoa nsurlconnection

我正在编写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];

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

我正在实现委托功能:

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

问题是我无法弄清楚哪个网站被调用,我只得到了数据。

如何确定连接解析的URL?

例如:

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

我可以查看来自NSString的{​​{1}}中的NSURL URL,但是我无法检查上述功能。

1 个答案:

答案 0 :(得分:2)

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

更重要的是,为什么要从头开始编写RSS阅读器?在10.5+你可以use the PubSub.framework to do the work for you。这个框架处理各种奇怪的格式和无效的XML,真的可以节省你很多时间。也许它非常适合你想做的事情?