У меня чертовски много времени с этим - я пытаюсь проанализировать XML-файл и установить текст в переменной NSMutableString, чтобы позже заполнить текст метки, как вы можете видеть ниже.
В моем .h у меня есть следующее (упрощенно);
NSMutableString *contentsOfCurrentXMLProperty;
@property (nonatomic,retain) NSMutableString *contentsOfCurrentXMLProperty;
По моему .m:
-(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"?