1.先創建類目類:繼承於NSUserDefaults
2其次前提:保存的model要實現NSCoding
3.在自定義的類目實現這兩個方法
-(void)setCustomObj:(id)obj forKey:(NSString *)key;
-(id)customObjForKey:(NSString *)key;
在自定義的類目中實現這兩個方法
-(void)setCustomObj:(id)obj forKey:(NSString *)key
{
if ([obj respondsToSelector:@selector(encodeWithCoder:)] == NO) {
NSLog(@"對象存入失敗!對象必須實現NSCoding 協議的 encodeWithCoder:方法");
return;
}
NSData * encodeObject = [NSKeyedArchiver archivedDataWithRootObject:obj];
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:encodeObject forKey:key];
[defaults synchronize];
}
-(id)customObjForKey:(NSString *)key
{
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSData * encodeObject = [defaults objectForKey:key];
if (encodeObject == nil) {
return nil;
}
id obj = [NSKeyedUnarchiver unarchiveObjectWithData:encodeObject];
return obj;
}
4.再次來到我們保存model中實現NSCoding協議
- (id)initWithCoder:(NSCoder *)decoder
{
self = [super initWithCoder:decoder];
if (self) {
self.cityId = [decoder decodeObjectForKey:@"cityId"];
self.cityName = [decoder decodeObjectForKey:@"cityName"];
self.cityLat = [decoder decodeObjectForKey:@"cityLat"];
self.cityLng = [decoder decodeObjectForKey:@"cityLng"];
self.firstCharacter = [decoder decodeObjectForKey:@"firstCharacter"];
self.subsidiaryBankId = [decoder decodeObjectForKey:@"subsidiaryBankId"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.cityId forKey:@"cityId"];
[aCoder encodeObject:self.cityName forKey:@"cityName"];
[aCoder encodeObject:self.cityLat forKey:@"cityLat"];
[aCoder encodeObject:self.cityLng forKey:@"cityLng"];
[aCoder encodeObject:self.firstCharacter forKey:@"firstCharacter"];
[aCoder encodeObject:self.subsidiaryBankId forKey:@"subsidiaryBankId"];
}
5.最后來到控制器中,實例化類目,就可以實現保存model