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

関連する問題