2012-03-21 11 views
1

Web上のXML-Docからデータを解析しているアプリケーションを作成しています。したがって、読み込みが終了すると、次のように解析メソッドを呼び出すことになっています。自己エラーを使ってメソッドを呼び出す

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

}

これは右、理論的には動作するはず?問題は私はこのエラーが表示されます:

Reciever type 'ffwDetailViewController' for instance message does not declare a method with selector 'startParsing Data'

私はそれを取る、xCodeはこの方法は存在しないと思いますが、します。

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

}

私が何をするか分かりません。私は本当に助けていただければ幸いです。

彼らのポジションを切り替えることは、そのトリックでした。残念ながら、ボタンを押すとアプリケーションがクラッシュするようになりました。ここに完全なコードがあります。あなたが私を助けることを願っています。

- (IBAction)getMissions:(id)sender { 

if (recievedData) { 
    recievedData = nil; 
} 
[email protected]"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{ 

[email protected]"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; 
} 

}

+1

ヘッダーファイルにそのメソッドが宣言されていますか? –

+0

あなたの問題を解決したので、Peter Mの答えを受け入れるべきです。あなたは今新しい問題を抱えているので、新しい質問として投稿してください。 – Jim

+0

さて、ありがとう、ありがとう。 – oengelha

答えて

3

-(void)startParsingDataが物理的である必要が-(void)startParsingData次いで(.Hまたは.mファイル内の拡張子のいずれかで)クラスの@interfaceセクションで宣言されていない場合.mファイルに-(void)connectionDidFinishLoadingの前に。

.mファイルにはどのような順序がありますか?

+0

ありがとう!彼らのポジションを切り替えることはやりました。残念ながら、ボタンを押すとアプリケーションがクラッシュするようになりました。ここに完全なコードがあります。あなたが私を助けることを願っています。 – oengelha

関連する問題