沙盒文件的路径:
//第一种获取文件夹地址的方法
NSString *dccumentStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@",dccumentStr);
//第二种:
//第一步:获取沙盒的主路径的地址
NSString *homeStr = NSHomeDirectory();
NSLog(@"%@",homeStr);
//第二部:在沙盒主路径后拼接Documents,拼接出来Documents文件夹的路径
NSString *documentPath=[homeStr stringByAppendingPathComponent:@"Library/Caches"];
NSLog(@"documentPath===%@",documentPath);
//获取tmp文件夹的路径
NSString *tmpPath=NSTemporaryDirectory();
NSLog(@"tmp=======%@",tmpPath);
简单对象的本地化操作:
字符串NSMutableString/NSString
//1:我们知道要存在那里,所以需要你一个文件夹路径
NSString *documentPathStr=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
//2:我们知道要存储什么,所以需要创建一条数据
NSString *str = @"wo ai ni a ";
//3:知道我们存储的东西在哪,所以需要创建哟个路径,路径的终点就是我们数据
NSString *strPath = [documentPathStr stringByAppendingPathComponent:@"ter.txt"];
NSLog(@"%@",strPath);
//4:准备一做好,开始做好写入的准备
[str writeToFile:strPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
NSString *newstr=[NSString stringWithContentsOfFile:strPath encoding:NSUTF8StringEncoding error:nil];
NSLog(@"%@",newstr);
数组NSArray/NSMutableArray:
//1:我要知道存在那里,所以我要一个文件夹的路径
NSString *dcoumentPathStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
//2:我知道要存什么,所以创建一条数据
NSArray *array = @[@"3",@"4",@"5",@"6",@"0"];
//3:我要知道东西存在吧那里,所以我要穿件一个路径,路径的终点就是数据的文件
NSString *str1Path = [dcoumentPathStr stringByAppendingPathComponent:@"array.plist"];
//4:4:执行存=存储事件
[array writeToFile:str1Path atomically:YES];
NSArray *newarray = [NSArray arrayWithContentsOfFile:str1Path];
NSLog(@"%@",newarray);
字典NSDictionary/NSMutableDictionary:
//1:我们要知道存在哪里,所以需要一个文件路径
NSString *documentPathStr1=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
//2:我们要知道存什么所以创建一条数据
NSDictionary *dic=@{@"name":@"dahsan",@"ann":@"nv"};
//3:我们要知道东西存在哪里,所我要创建 一个路径,路经的终点就是数据的文件
NSString *str2Path = [documentPathStr1 stringByAppendingPathComponent:@"dic.plist"];
//4:准备已做好,开始写入的操作
[dic writeToFile:str2Path atomically:YES];
NSDictionary *newdic = [NSDictionary dictionaryWithContentsOfFile:str2Path];
NSLog(@"%@",newdic);
数据NSData/NSMutableData:
//1:我们要知道东西在哪里,所以需要获取一个文件路径
NSString *documentPathstr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
//2:我们要知道存什么所以城建一条数据
UIImage *image = [UIImage imageNamed:@"123"];
//创建NSData;
// 第一个参数:转哪个UIImage类型的对象
// 第二个参数:压缩系数,越小压缩的越厉害
//将data存入本地,读取出来,并放在imageView展示
NSData *data=UIImageJPEGRepresentation(image, 1);
NSString *dataFile = [documentPathstr stringByAppendingPathComponent:@"123.png"];
[data writeToFile:dataFile atomically:YES];
NSLog(@"%@",dataFile);
NSData *newdata = [NSData dataWithContentsOfFile:dataFile];
UIImage *newImage = [UIImage imageWithData:newdata];
UIImageView *imageView = [[UIImageView alloc]initWithImage:newImage];
NSLog(@"%@",imageView);
[self.view addSubview:imageView];
复杂对象的存储:归解档
第一步:创建一个Person类,如果一个对象想直接写入本地,那么让它遵循NSCoding协议
@interface Person : NSObject@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *gender;
@property(nonatomic,assign)NSInteger age;
@end
第二步:在归档和解档的时候,要把所有的属性都进行 解档
#import "Person.h"
@implementation Person
//归档
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeObject:self.gender forKey:@"gender"];
[aCoder encodeInteger:self.age forKey:@"age"];
}
//解档
-(instancetype)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
self.name = [aDecoder decodeObjectForKey:@"name"];
self.gender = [aDecoder decodeObjectForKey:@"gender"];
self.age = [aDecoder decodeIntForKey:@"age"];
}
return self;
}
@end
第三步:我们要知道存在哪里,所以需要一个文件路径
NSString *dcoument3PathStr = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
第四步:创建Person,提供数据
Person *person = [[Person alloc]init];
person.name=@"王倩";
person.gender = @"女";
person.age=33;
将复杂对象归档之后存入本地
//第五步:创建 一个NSMutableData,用于初始化归档工具
NSMutableData *data1=[NSMutableData data];
NSLog(@"~~%@",data1);
//第六步:创建一个归档工具
NSKeyedArchiver *keyedArchiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data1];
NSLog(@"~~~~~~%@",keyedArchiver);
//第七步: 使用归档工具,对需要归档的对象进行归档
[keyedArchiver encodeObject:person forKey:@"person"];
NSLog(@"!!!!%@",data);
//第八步: 结束归档
[keyedArchiver finishEncoding];
NSLog(@"~~~~~~~~%@",data);
NSString *mutablePath = [dcoument3PathStr stringByAppendingPathComponent:@"person.plist"];
[data writeToFile:mutablePath atomically:YES];
解档并使用:
//第九步:从本地获取到data
NSData *newdata1 = [NSData dataWithContentsOfFile:mutablePath];
//第十步:通过获取到的data 创建一个解档工具
NSKeyedUnarchiver *keyedUnarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:newdata1];
//第十一步:创建一个person对象,接受解档结果
Person *newperson = [keyedUnarchiver decodeObjectForKey:@"person"];
//第十二步:结束解档
[keyedUnarchiver finishDecoding];
NSLog(@"%@",newperson.name);
NSLog(@"%@",newperson.gender);
NSLog(@"~~~~~~~~~~~~~~~~%ld",newperson.age);