Добавить строку в строку NSXmlParser? - PullRequest
0 голосов
/ 09 марта 2012

Я использую 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 Ответ

1 голос
/ 09 марта 2012

Ну, с

tempF = [[NSMutableString alloc] init];

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

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

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

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