iOS 數據儲存--歸檔
阿新 • • 發佈:2017-05-20
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 數據儲存--歸檔