存储到本地的数据类型有:数组,字典,字符串,对象类型的;
1 字符串的本地存储:
NSString *str =@"dsadasd";
NSArray *arr =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
NSString *path = [arr firstObject];
NSString *stringPath = [NSStringstringWithFormat:@"%@/hello", path];
[strwriteToFile:stringPathatomically:YESencoding:NSUTF8StringEncodingerror:nil];
NSLog(@"%@", path);
数据的读取:
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)firstObject];
path = [NSStringstringWithFormat:@"%@/hello.text", path];
NSString *str = [NSStringstringWithContentsOfFile:pathencoding:NSUTF8StringEncodingerror:nil];
NSLog(@"%@", str);
NSArray *arr =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
NSString *path = [arr firstObject];
NSString *path = [arr firstObject];
NSArray *a = [NSArrayarrayWithObjects:@"dsa",@"dad",nil];
NSString *arrPath = [NSStringstringWithFormat:@"%@/arr", path];
[awriteToFile:arrPathatomically:YES];
数据的读取:
NSArray *array = [NSArrayarrayWithContentsOfFile:arrPath];
3 nsdata的本地存储
NSArray *arr =NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
NSString *path = [arr firstObject];
字符串转换为nsdata类型
NSString *str =@"sadas d";
NSData *data = [strdataUsingEncoding:NSUTF8StringEncoding];
NSString *dataPath = [NSStringstringWithFormat:@"%@/data", path];
[datawriteToFile:dataPath atomically:YES];
jason类型转换为nsdata类型
NSMutableArray *arr = [NSMutableArrayarrayWithObjects:@"1",@"2",@"4", @"5",nil];
NSData *data = [NSJSONSerializationdataWithJSONObject:arroptions:NSJSONWritingPrettyPrintederror:nil];
图片转换为nsdata类型
NSString *pic = [[NSBundlemainBundle]pathForResource:@"h1"ofType:@"jpg"];
NSData *dPic = [NSDatadataWithContentsOfFile:pic];
NSString *path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES)firstObject];
path = [NSStringstringWithFormat:@"%@/arrData", path];
NSData *data = [NSDatadataWithContentsOfFile:path];
NSLog(@"%@", data);
// 把data转换乘字符串
NSString *str =[[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding];
NSLog(@"%@", str);
// data转换成json
NSArray *arr = [NSJSONSerializationJSONObjectWithData:dataoptions:NSJSONReadingMutableContainerserror:nil];
NSLog(@"%@", arr);
model类型对象存储:
1 先进行归档/解档(序列化,反序列化)使用协议 nscode
// 归档或者序列化 将属性按照一定的格式分装起来 便于转换成nsdata
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.name forKey:@"name"];
[aCoder encodeObject:self.sex forKey:@"sex"];
[aCoder encodeObject:self.hobby forKey:@"hobby"];
NSNumber *age = [NSNumber numberWithInteger:self.age];
[aCoder encodeObject:age forKey:@"age"];
}
// 解档或者反序列化 将属性从data中取出来
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super init];
if (self) {
self.name = [aDecoder decodeObjectForKey:@"name"];
self.sex = [aDecoder decodeObjectForKey:@"sex"];
self.hobby = [aDecoder decodeObjectForKey:@"hobby"];
NSNumber *age = [aDecoder decodeObjectForKey:@"age"];
self.age = [age integerValue];
}
return self;
}
2把对象转换成nadata,然后再存储
Student *stu = [StudentstudentWithName:@"李四"sex:@"男"hobby:@"女"age:18];
NSData *data = [NSKeyedArchiverarchivedDataWithRootObject:stu];
NSString *path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES)firstObject];
path = [NSStringstringWithFormat:@"%@/stu.text", path];
[datawriteToFile:pathatomically:YES];
类的读取
Student *stu = [NSKeyedUnarchiverunarchiveObjectWithFile:path];