setValue points to the object instead of copying the NSString
-
01-07-2021 - |
Question
I'm parsing an XML document. I have an NSMutableString
to hold the value for each node I'm passing through and for specific nodes - I want to update the NewsElement
class.
This is my code:
[newsElement setValue:currentElementValue forKey:elementName];
The currentElementValue is the NSMutableString
the the elementName is key I want to update. Each field is NSString
.
The problem is that instead of copying the string, now my NSString
points to the currentElementValue address so all of the fields are always the same...
Solution
Presumably copying currentElementValue
would fix your problem. Have you tried:
[newsElement setValue:[currentElementValue copy] forKey:elementName];
This will make an immutable copy (i.e. an NSString
) of the currentElementValue
which is an NSMutableString
. If you need the copy to be mutable you could use the mutableCopy
method instead, for example:
[newsElement setValue:[currentElementValue mutableCopy] forKey:elementName];