我正在使用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:
方法,一切正常。
答案 0 :(得分:1)
好吧,
tempF = [[NSMutableString alloc] init];
你创建一个新的可变字符串,并将指向新对象的指针分配给变量tempF
,但是
tempF = [attributeDict valueForKey:@"data"];
在下面的中,用一个指向XML解析器分配的字符串的指针替换指向new mutable的指针,以表示属性值 - 这看起来是不可变的。 (注意,你还引入了内存泄漏)。请尝试改为:
tempF = [[NSMutableString alloc] init];
[tempF appendString: [attributeDict valueForKey:@"data"]];