iOS保存model數據(自定義Model 可以存放到本地)


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM