使用self调用方法会导致错误



我正在编写一个应用程序,该应用程序正在解析web上XML文档中的数据。因此,当它完成加载时,它应该调用解析方法,如下所示。

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
[self startParsingData];

}

这在理论上应该有效,对吧?问题是我得到了这个错误:

实例消息的接收方类型"ffwDetailViewController"未声明具有选择器"startParsing Data"的方法

我认为,xCode认为这个方法不存在。,但确实如此。

-(void)startParsingData{
NSXMLParser *dataParser = [[NSXMLParser alloc] initWithData:recievedData];
dataParser.delegate = self;
[dataParser parse];

}

我不知道该怎么办。我真的很感激任何帮助。

改变他们的位置起了作用。不幸的是,现在该应用程序在按下按钮时崩溃。这是完整的代码。我希望你能帮助我。

- (IBAction)getMissions:(id)sender {
if (recievedData) {
    recievedData = nil;
}
_einsaetze.text=@"Pasing Data...";
NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://oliverengelhardt.de/ffw_app/test.xml"]]
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
//Start loading Data
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
    recievedData = [NSMutableData data];
}else{
    [_einsaetze setText:@"connection failed"];
}

}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
[recievedData setLength:0];

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
if (recievedData) {
    [recievedData appendData:data];
}

}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
_einsaetze.text=@"connnection failed";

}

-(void)startParsingData{
NSXMLParser *dataParser = [[NSXMLParser alloc] initWithData:recievedData];
dataParser.delegate = self;
[dataParser parse];

}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    [self startParsingData];
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if ([elementName isEqualToString:@"element"]) {
    NSString *myData = [NSString stringWithFormat:@"%@", [attributeDict objectForKey:@"myData"]];
    _einsaetze.text = myData;
}

}

如果-(void)startParsingData没有在类的@interface部分中声明(在.h中或在.m文件中的扩展名中),则-(void)startParsingData在物理上需要位于.m文件的-(void)connectionDidFinishLoading之前。

它们在你的.m文件中的顺序是什么?

相关内容

最新更新