I am trying to save two strings. One string needs to be saved as type ARRAY in the pList and the second string needs to be saved as String in the Array.
I can use the code:
[dictionary setObject:(id)anObject forKey:(id)aKey>]
but it doesn’t save it correctly. I can cast one of the strings as an array, but it still doesn’t work right.
What is the proper method for saving an array to the pList?
Here is what my pList looks like:
<dict>
<key>Test One</key>
<array>
<string>A13#</string>
</array>
<key>Another Test</key>
<array>
<string>1111111111</string>
</array>
<key>Test Three</key>
<array>
<string>2222222222</string>
</array>
<key>Final Test</key>
<array>
<string>3333333333</string>
</array>
</dict>
here is the method I am using to try to
-(void)writeToFile:(NSString *)s1{
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@"saved" ofType:@"plist"];
NSMutableDictionary *dictionary = [[[NSDictionary alloc] initWithContentsOfFile:plistPath] mutableCopy];
NSString *tempString = [NSString stringWithFormat:@"1234567"];
[dictionary setObject:tempString forKey:s1];
[dictionary writeToFile:plistPath atomically:YES];
}
You can’t cast or otherwise convert a string into an array; they’re separate, distinct objects. It’s the same as if in real life you try to turn your dog into a station wagon, it isn’t happening.
Instead, put your dog inside the station wagon (or put your string(s) inside an array). You can create the array with
[NSArray arrayWithObjects:@"string1", @"string2", nil];. Stick that inside your dictionary for a given key, along with your final string for another key, save it, and you’ll have a plist with an array of one or more strings.Also, in your code example your dictionary is leaking memory. Read up on memory management in Objective-C, you’re going to run into lots of crashes and performance issues until you understand it well.