2012-03-09 4 views
0

Я использую NSXmlParser для извлечения строки из файла XML. Элементы XML выглядеть следующим образом: <temp_f data="63"/>Добавить строку в строку NSXmlParser?

Я могу успешно войти данные из тегов XML, но когда я пытаюсь добавить строку к этим данным я получаю сообщение об ошибке сказав: Attempt to mutate immutable object with appendString:tempF фактически изменяемый объект, это объявленный как NSMutableString *tempF; в файле заголовка. Я успешно присоединил строки к NSMutableSrings, но по какой-то причине он не работает в этом случае. Что я делаю неправильно, пожалуйста, помогите?

Мой код:

if ([elementName isEqual:@"temp_f"]) { 
     tempF = [[NSMutableString alloc] init]; 
     tempF = [attributeDict valueForKey:@"data"]; 
     [tempF appendString:@"°F"]; 
     NSLog(@"tempF: %@", tempF); 
    } 

Все отлично работает без метода appendString:.

ответ

1

Ну, с

tempF = [[NSMutableString alloc] init]; 

создать новую изменяемую строку и присвоить указатель на новый объект переменной tempF, но с

tempF = [attributeDict valueForKey:@"data"]; 

непосредственно ниже, вы замените указатель новый измененный с указателем на строку, выделенную синтаксическим анализатором XML, чтобы представить значение атрибута - что является неизменным, как кажется. (Обратите внимание, что вы также вводите утечку памяти). Попробуйте вместо этого:

tempF = [[NSMutableString alloc] init]; 
[tempF appendString: [attributeDict valueForKey:@"data"]]; 
+0

Aaaaaaahhhhhhhh! Большое спасибо! Работает как шарм. Я схожу с ума, пытаясь понять это. – wigging

Смежные вопросы