【问题标题】:Append string to NSXmlParser string?将字符串附加到 NSXmlParser 字符串?
【发布时间】:2012-03-09 18:54:19
【问题描述】:

我正在使用 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: 方法一切正常。

【问题讨论】:

    标签: objective-c nsstring nsxmlparser nsmutablestring


    【解决方案1】:

    嗯,有

    tempF = [[NSMutableString alloc] init];
    

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

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

    直接在下面,将指向新可变对象的指针替换为指向由 XML 解析器分配的字符串的指针,以表示属性值——这看起来是不可变的。 (请注意,您还引入了内存泄漏)。试试吧:

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

    【讨论】:

    • 啊啊啊啊啊啊啊啊!非常感谢!奇迹般有效。想弄清楚这一点我快疯了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 2012-10-04
    • 2012-01-12
    • 2012-09-14
    • 2012-12-05
    • 2013-02-09
    相关资源
    最近更新 更多