Add this to your Car.m
- (void)encodeWithCoder:(NSCoder *)coder;
{
[coder encodeObject:name forKey:@"name"];
[coder encodeObject:speed forKey:@"speed"];
}
- (id)initWithCoder:(NSCoder *)coder;
{
self = [[Car alloc] init];
if (self != nil)
{
name = [coder decodeObjectForKey:@"name"];
speed = [coder decodeObjectForKey:@"speed"];
}
return self;
}
In setFav
method to store array
NSData *dataForArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"favoriteCars"];
if (dataForArray != nil)
{
favoritesArray = [NSMutableArray arrayWithArray:[NSKeyedUnarchiver unarchiveObjectWithData:dataForArray]];
}
[favoritesArray addObject:Car];
[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:favoritesArray] forKey:@"favoritesCars"];
And to retrieve array in favorites view controller
NSData *dataForArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"favoriteCars"];
if (dataForArray != nil)
{
array = [NSMutableArray arrayWithArray:[NSKeyedUnarchiver unarchiveObjectWithData:dataForArray]];
}
This makes your custom objects conform to NSCoding so you can use NSUserDefaults.