When I save array of product (which is a custom object) in NSUserDefaults
, and retrieve array from NSUserDefaults
, it returns random array. And when I check whether returned array contains added product or not, it always fails. Here is my code:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"MY_FAV_PROD"];
NSArray *myFavArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSMutableArray *array = [[NSMutableArray alloc] initWithArray:myFavArray];
if(myFavArray.count || array.count) {
if([array containsObject:self.product]) {
[array removeObject:self.product];
myFavArray = nil;
myFavArray = [myFavArray copy];
data = [NSKeyedArchiver archivedDataWithRootObject:myFavArray];
[defaults setObject:data forKey:@"MY_FAV_PROD"];
[defaults synchronize];
[self addButton:@"UnFilled"];
}
else {
[array addObject:self.product];
myFavArray = nil;
myFavArray = [array copy];
data = [NSKeyedArchiver archivedDataWithRootObject:myFavArray];
[defaults setObject:data forKey:@"MY_FAV_PROD"];
[defaults synchronize];
[self addButton:@"Filled"];
}
}
else {
NSArray *firstObj = [[NSArray alloc] initWithObjects:self.product, nil];
data = [NSKeyedArchiver archivedDataWithRootObject:firstObj];
[defaults setObject:data forKey:@"MY_FAV_PROD"];
[defaults synchronize];
[self addButton:@"Filled"];
}
data = [defaults objectForKey:@"MY_FAV_PROD"];
myFavArray = [NSKeyedUnarchiver unarchiveObjectWithData:data];
NSLog(@"%@",myFavArray);
Please help