1. 程式人生 > >iOS 數據儲存--歸檔

iOS 數據儲存--歸檔

sea 。。 property append direct mobile mas rect bsp

四種數據持久化方式 http://www.cocoachina.com/ios/20160617/16739.html

//先把數據在model中歸解檔

。h

技術分享
@property(nonatomic,copy)NSString *email;
@property(nonatomic,copy)NSString *uid;
@property(nonatomic,copy)NSString *mobile;
@property(nonatomic,copy)NSString *vip;
@property(nonatomic,copy)NSString *regtime;
@property(nonatomic,copy)NSString *is_sec_pwd;
技術分享

*is_sec_pwd;

。m

技術分享
#import "UserModel.h"
static UserModel *model;
@implementation UserModel
+(UserModel *)defaultCellModel{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (!model) {
            model = [[UserModel alloc]init];
        }
    });
    return model;
}
- (void)encodeWithCoder:(NSCoder *)aCoder{
    [aCoder encodeObject:self.account forKey:@"account"];
    [aCoder encodeObject:self.regmobile forKey:@"regmobile"];
    [aCoder encodeObject:self.sec1_question forKey:@"sec1_question"];
    [aCoder encodeObject:self.headimage forKey:@"headimage"];
    [aCoder encodeObject:self.expert_audit forKey:@"expert_audit"];
  
    
}

- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder{
    self = [super init];
    
    if(self)
        
    {
        
        self.account = [aDecoder decodeObjectForKey:@"account"];
        
        self.regmobile = [aDecoder decodeObjectForKey:@"regmobile"];
        self.sec1_question = [aDecoder decodeObjectForKey:@"sec1_question"];
        self.headimage = [aDecoder decodeObjectForKey:@"headimage"];
   
        
    }
    
    return self;

}

@end
技術分享

//

NSUserDefaults

保存

Model數據-》歸檔-》NSUserdefaults

NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

//不能直接存取NSObject,需要先歸檔轉成NSData

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:model];

[defaults setObject:data forKey:@"model"];

NSUserdefaults-》解檔-》Model數據

NSData *modeldata = [[NSUserDefaults standardUserDefaults]objectForKey:@"model"];

usermodel = [NSKeyedUnarchiver unarchiveObjectWithData:modeldata];

//文件中保存

#import "ViewController.h" #import "linePesist.h" //導入數據模型類 #define CodeString @"CodeString" @implementation ViewController -(NSString *)dataFile{ NSArray *ar = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); NSString *fielpath = [ar objectAtIndex:0]; return [fielpath stringByAppendingPathComponent:@"data.archive"]; //改修後綴名,以免與屬性列表創建的文件重復,而加載成舊的的文件。 不用查字典了。。archive表歸檔 } - (void)viewDidLoad { [super viewDidLoad]; NSString *filepath = [self dataFile]; NSLog(@"%@",filepath); if([[NSFileManager defaultManager]fileExistsAtPath:filepath]) { //創建2個實例 NSData *data = [[NSData alloc]initWithContentsOfFile:filepath]; NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data]; //把已歸檔的對象讀取。賦值給linepesist linePesist *linepesist =[unarchiver decodeObjectForKey:CodeString]; [unarchiver finishDecoding]; //完成解檔 for(int i = 0;i

iOS 數據儲存--歸檔