数据本地存储方法

存储到本地的数据类型有:数组,字典,字符串,对象类型的;


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);



2 jason类型的本地存储(数组,字典)

 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];


data数据类型的读取

 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);


4 类的本地存储

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];








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值