Добавить строку в строку NSXmlParser?

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

Я могу успешно записать данные из тегов 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"]];
Другие вопросы по тегам