NSMutableString проблема с NSXMLParser - PullRequest
1 голос
/ 24 августа 2009

У меня чертовски много времени с этим - я пытаюсь проанализировать 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"?

1 Ответ

1 голос
/ 24 августа 2009

-setString: метод экземпляра, а не метод класса. Если у вас уже есть действительный объект NSMutableString, назначенный для contentOfCurrentXMLProperty, и вы просто хотите его очистить, то:

contentsOfCurrentXMLProperty = [NSMutableString setString:@""];

должно быть

[contentsOfCurrentXMLProperty setString:@""];

С другой стороны, если вы хотите назначить новый объект для contentOfCurrentXMLProperty, вот один допустимый способ сделать это:

self.contentsOfCurrentXMLProperty = [NSMutableString stringWithCapacity:0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...