2012-03-09 89 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