ios 持久化保存(存储)
读取本地json文件
NSString *filePath=[[NSBundle mainBundle]pathForResource:@"queryCart"ofType:@"json"]; NSData *jdata = [[NSData alloc]initWithContentsOfFile:filePath]; NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jdata options:NSJSONReadingMutableContainers error:nil];
保存到沙盒
//1.获得沙盒根路劲 NSString *home=NSHomeDirectory(); NSLog(@"%@",home); //2.document的路径 //NSString *docPath=[home stringByAppendingString:@"/Documents"]; NSString *docPath=[home stringByAppendingPathComponent:@"Documents"]; NSLog(@"%@",docPath);//获取文档路劲 NSArray *path=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentDirectory=[path objectAtIndex:0]; NSLog(@"%@\n %@",documentDirectory,[path lastObject]);//获取文档路径,数组中只有一个文件 //3. //新建数据,字典,数组 NSArray *data=@[@"jack",@20,@"aaaa"]; NSString *filePath=[docPath stringByAppendingPathComponent:@"data.plist"]; [data writeToFile:filePath atomically:YES];
从沙盒读取
NSString *home=NSHomeDirectory(); NSString *docPath=[home stringByAppendingPathComponent:@"Documents"]; NSString *filePath=[docPath stringByAppendingPathComponent:@"data.plist"]; NSArray *arr= [NSArray arrayWithContentsOfFile:filePath]; NSLog(@"%@",arr);
使用NSUserDefault 保存,偏好设置
//利用NSUserDefaults就能直接访问软件的偏好设置(Library/Preferences) NSUserDefaults *Default=[NSUserDefaults standardUserDefaults]; [Default setObject:@"DH" forKey:@"account"]; [Default setObject:@"123" forKey:@"pwd"]; [Default setInteger:10 forKey:@"age"]; [Default setBool:YES forKey:@"auto_login"]; [Default synchronize];
使用NSUserDefault 读取
//利用NSUserDefaults就能直接访问软件的偏好设置(Library/Preferences) NSUserDefaults *Default=[NSUserDefaults standardUserDefaults]; NSString *str=[Default objectForKey:@"account" ]; BOOL isAuto=[Default boolForKey:@"auto_login"]; int age=[Default integerForKey:@"age"]; NSLog(@"%@,%d,%d",str,isAuto,age);
使用NSKeyedArchiver 归档 保存(
注意:DHPerson 需要实现遵守协议 NSCoding 并且实现 方法initWithCoder: 和 encodeWithCoder:
/** * 将对象归档的时候会调用(将对象写入文件之前会调用) * 在这个方法说清楚,1.那些属性需要存储 2.怎样存储这些属性 */ -(void)encodeWithCoder:(NSCoder *)aCoder { [aCoder encodeObject:_name forKey:@"name"]; [aCoder encodeInt:_age forKey:@"age"]; } /** * 当从文件中解析对象时候调用 * 1.那些属性需要解析 2.怎样解析这些属性 */ -(id)initWithCoder:(NSCoder *)aDecoder { if (self=[super init]) { _name=[aDecoder decodeObjectForKey:@"name"]; _age=[aDecoder decodeIntForKey:@"age"]; } return self; }
DHPerson *person=[[DHPerson alloc]init]; person.name=@"张三"; person.age=20; person.height=1.73; NSString *home=NSHomeDirectory(); NSLog(@"%@",home); NSString *filePath=[home stringByAppendingPathComponent:@"person.data"]; [NSKeyedArchiver archiveRootObject:person toFile:filePath];
使用NSKeyedArchiver 解档 读取
NSString *home=NSHomeDirectory(); NSString *filePath=[home stringByAppendingPathComponent:@"person.data"]; DHPerson *person=[NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; NSLog(@"%@,%@,%d",person,person.name,person.age);
浙公网安备 33010602011771号