2012-03-09 91 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 2012-03-09 19:22:29