Hi. I was curious what is considered the better way to manage the reading and writing of a High Score plist file. My High Score class is:
@interface HighScore : NSObject <NSCoding> {
    NSString  *name;
    int    score;
    int    level;
    int    round;
    NSDate   *date;
}
Now, I could do method A, add NSCoding methods:
- (void) encodeWithCoder: (NSCoder *) coder {
    [coder encodeObject: name
        forKey: kHighScoreNameKey];
    [coder encodeInt: score
        forKey: kHighScoreScoreKey];
    [coder encodeInt: level
        forKey: kHighScoreLevelKey];
    [coder encodeInt: round
        forKey: kHighScoreRoundKey];
    [coder encodeObject: date
        forKey: kHighScoreDateKey];
} // encodeWithCoder
- (id) initWithCoder: (NSCoder *) decoder {
    if (self = [super init]) {
     self.name = [decoder decodeObjectForKey: kHighScoreNameKey];
     self.score = [decoder decodeIntForKey: kHighScoreScoreKey];
     self.level = [decoder decodeIntForKey: kHighScoreLevelKey];
     self.round = [decoder decodeIntForKey: kHighScoreRoundKey];
     self.date = [decoder decodeObjectForKey: kHighScoreDateKey];
    }
    return (self);
} // initWithCoder
And write it all out with:
if (![NSKeyedArchiver archiveRootObject:highScoresList toFile:path]) ...
Reading it back in would be pretty straight forward. However the plist file, IMHO, looks like crap.
Or I could employ method B:
NSMutableArray *array = [NSMutableArray arrayWithCapacity:20];;
for (HighScore *hs in highScoresList) {
    NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:
           hs.name, kHighScoreNameKey,
           [NSNumber numberWithInteger:hs.score], kHighScoreScoreKey,
           [NSNumber numberWithInteger:hs.level], kHighScoreLevelKey,
           [NSNumber numberWithInteger:hs.round], kHighScoreRoundKey,
           hs.date, kHighScoreDateKey,
           nil];
    [array addObject:dict];
    [dict release];
}
and write it all out with:
if (![array writeToFile:path atomically:YES]) ...
Reading it back in is a tiny bit harder. But the plist file looks much cleaner (smaller and compact).
Any thoughts? Am I missing something that is much simpler? (I want to keep the High Scores separate from NSUserDefaults so I am not using that).