My implementation for something like this is following and works fine:
The user object (Settings) must implement the NSCoding protocol:
-(void)encodeWithCoder:(NSCoder *)encoder{ [encoder encodeObject:self.difficulty forKey:@"difficulty"]; [encoder encodeObject:self.language forKey:@"language"]; [encoder encodeObject:self.category forKey:@"category"]; [encoder encodeObject:self.playerType forKey:@"playerType"]; } - (id)initWithCoder:(NSCoder *)decoder { if (self = [super init]) { self.difficulty = [decoder decodeObjectForKey:@"difficulty"]; self.language = [decoder decodeObjectForKey:@"language"]; self.category = [decoder decodeObjectForKey:@"category"]; self.playerType = [decoder decodeObjectForKey:@"playerType"]; } return self; }
The following code writes the user object to the file (set.txt), and then restores it to the myArray array:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"set.txt"]; NSMutableArray *myObject=[NSMutableArray array]; [myObject addObject:self.settings]; [NSKeyedArchiver archiveRootObject:myObject toFile:appFile]; NSMutableArray* myArray = [NSKeyedUnarchiver unarchiveObjectWithFile:appFile];
Kostas Feb 03 '13 at 15:34 2013-02-03 15:34
source share