2009-08-24 7 views
1

私はXMLファイルを解析し、NSMutableString変数にテキストを設定しようとしています。これは、後でラベルのテキストを記入するためのものです。NSMutableParserでのNSMutableStringの問題

私の.hには次のものがあります(簡略化)。私.Mで

NSMutableString *contentsOfCurrentXMLProperty; 
@property (nonatomic,retain) NSMutableString *contentsOfCurrentXMLProperty; 

:私は私のアプリを実行すると

-(void) parseData { 
    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:myData]; 
    [parser setDelegate:self]; 
    [parser parse]; 
    [parser release]; 
} 



- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 
    if ([elementName isEqualToString:@"Title"]) { 
    NSLog(@"FOUND TITLE!"); 
    contentsOfCurrentXMLProperty = [NSMutableString setString:@""]; 
    } 
} 

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 
    if ([elementName isEqualToString:@"TITLE"]) { 
     myLabel.text = [contentsOfCurrentXMLProperty stringByReplacingOccurrencesOfString:@"[br]" withString:@"\n"]; 
    } 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
[self.contentsOfCurrentXMLProperty appendString:string]; 
} 

、データがダウンロードされ、正しく解析されます。私は、オブザーバーがイベントを再開したときに問題にぶつかります。 parseDataメソッドが呼び出され、次の行にトレースされたエラーが発生します。 "contentsOfCurrentXMLProperty = [NSMutableString setString:@" "]; "

NSMutableString変数を作成または初期化する適切な方法私が何度も何度も何度も何度も何度も何度も何度も何度も使用するのですかどこに/それを解放するのに最適な場所はどこですか?オブザーバがparseDataメソッドを起動したときに再び "contentsOfCurrentXMLProperty"を設定できるように、変数を本質的にクリアするにはどうすればよいですか?

答えて

1

-setString:はクラスメソッドではなくインスタンスメソッドです。すでにcontentsOfCurrentXMLPropertyに割り当てられた有効なNSMutableStringオブジェクトを持っており、単にそれをクリアしたい場合は、:あなたは、新しいオブジェクトを割り当てる場合

contentsOfCurrentXMLProperty = [NSMutableString setString:@""]; 

は、一方

[contentsOfCurrentXMLProperty setString:@""]; 

する必要がありますcontentsOfCurrentXMLProperty、これを行う有効な方法の1つは次のとおりです。

self.contentsOfCurrentXMLProperty = [NSMutableString stringWithCapacity:0]; 
+0

これはトリックでした。私はdeallocで[contentsOfCurrentXMLProperty release]を行うだけですか? – SonnyBurnette

+0

うん、それは正しいです。 –

+0

こんにちは、私は似たような問題を抱えています.xmlドキュメントの全内容を取得して 'contentsOfCurrentXMLProperty'に追加するにはどうすればいいですか?私の問題はこれです:http://stackoverflow.com/questions/16702628/get-the-entire-xml-downloaded-data – Malloc

関連する問題