Reputation: 17169
I have plist in my iphone app and I want to read and write an integer from my single to and form it.
I have this to read it:
scoreData *score = [scoreData sharedData];
filePath = @"stats.plist";
NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
score.highScore = [plistDict objectForKey:@"score"];
Then to write to it:
scoreData *score = [scoreData sharedData];
NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
[plistDict setValue:score.highScore forKey:@"score"];
[plistDict writeToFile:filePath atomically: YES];
I am getting an error in both parts:
Invalid conversion form objc_object* to int
and
Invalid conversion form int to objc_object
I appreciate any help, thanks.
Upvotes: 6
Views: 14507
Reputation: 5133
See if this answers your question:
How to create a new custom property list in iPhone Applications
You could use NSUserDefaults but of course highScore isn't really a default.
Upvotes: 0
Reputation: 71048
Two things:
When you're setting a key in a dictionary, you're probably after setObject:forKey:
instead of setValue:forKey:
.
Dictionaries hold objects (type id
or NSString*
or your own Obj-C objects), not primitive types (int, BOOL, etc).
When you want to store a primitive type in an Obj-C collection, you can "wrap" it in an object like this:
[plistDict setObject:[NSNumber numberWithInt:score.highScore] forKey:@"score"];
And get it back like this:
score.highScore = [[pListDict objectForKey:@"score"] intValue];
Upvotes: 7