将字符串附加到NSXmlParser字符串?

时间:2012-03-09 18:54:20

标签: objective-c nsstring nsxmlparser nsmutablestring

我正在使用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 个答案:

答案 0 :(得分:1)

好吧,

tempF = [[NSMutableString alloc] init];

你创建一个新的可变字符串,并将指向新对象的指针分配给变量tempF,但是

tempF = [attributeDict valueForKey:@"data"];
在下面的

中,用一个指向XML解析器分配的字符串的指针替换指向new mutable的指针,以表示属性值 - 这看起来是不可变的。 (注意,你还引入了内存泄漏)。请尝试改为:

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