【发布时间】:2012-07-24 09:35:02
【问题描述】:
要向服务器发送请求以下载数据,我正在使用 NSOperation。接收数据后,我正在使用 NSXMLParser 解析响应,但它没有调用解析器委托方法等
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
或
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
谁能告诉我哪里做错了。
//Creating NSOperation as follows:
NSOperationQueue *operationQueue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(createRequestToGetData) object:nil];
[operationQueue addOperation:operation];
[operation release];
-(void)createRequestToGetData
{
NSError *error;
NSURL *theURL = [NSURL URLWithString:myUrl];
NSData *data = [NSData dataWithContentsOfURL:theURL];
MyXMLParser *theXMLParser = [[MyXMLParser alloc]init];
NSError *theError = NULL;
[theXMLParser parseXMLFileWithData:data parseError:&theError];
NSLog(@"Parse data:%@",theXMLParser.mParsedDict); //Cursor is not coming here.
[theXMLParser release];
}
注意:MyXMLParser 是 NSObject 的子类,它实现 Parser 委托方法,但我的光标没有到达 NSLog。当在 Parser 委托方法中放置调试点时发现这些方法没有被调用。
谁能告诉我问题出在哪里以及如何解决这个问题。
提前致谢!
【问题讨论】:
-
createRequestToGetData是否被调用?你那里有断点吗? -
请包含您的 MyXMLParser 类的代码。
parseXMLFileWithData:parseError:是否创建了一个 NSXMLParser,将自己设置为委托,并调用 NSXMLParser 的解析方法? -
是的 createRequestToGetData 被调用并且 MyXMLParser 将自己设置为 NSXMLParser 委托。
标签: iphone objective-c nsxmlparser nsoperation