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


我可以检查来自NSStringNSURL URL中的NSURLResponse,但是在上述功能中我不能。

最佳答案

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

更重要的是,为什么要从头开始编写RSS阅读器?在10.5+上,您可以use the PubSub.framework to do the work for you。该框架处理各种奇怪的格式和无效的XML,确实可以节省大量时间。也许这很适合您要执行的操作?

关于cocoa - 如何区分委托(delegate)方法中的NSURLConnections?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1775903/

10-15 11:03