字符串,数组和字典的简单本地存储!以及复杂类型对象的存储

- (void)searchDocmentPath

{

    //获取存储路径

    NSArray *path =  NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSLog(@"%@", path);

}


  1.字符串,数组和字典的简单本地存储

#pragma mark 获取documents文件夹位置

- (NSArray *)getPathOfDocuments{

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    return paths;

}


- (void)writeString

{

    //获取文件路径并写入文件

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *str = [path firstObject];

    str = [NSString stringWithFormat:@"%@%@",str,@"/text.txt"];//创建text.txt文件

    //初始化一个字符串

    NSString *string = @"快乐的山猫,快乐的吉米!";

    //错误提示

    NSError *error = nil;

    //将字符串写入文件

    [string writeToFile:str atomically:YES encoding:NSUTF8StringEncoding error:&error];//string写入到text.txt文件中

    if (error) {

        NSLog(@"%@", error);

    }

}


- (void)getString{

    //获取路径

    NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/text.txt"];

    NSError *error = nil;

    //读取文件

    NSString *string = [[NSString alloc] initWithContentsOfFile:str encoding:NSUTF8StringEncoding error:&error];

    if(error){

        NSLog(@"%@",error);

    } else {

        NSLog(@"string == %@",string);

    }

    [string release];

}


- (void)getAndWrite//重复写入

{

    //读取文件里的字符串

    NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/text.txt"];

    NSError *error = nil;

    NSString *string = [[NSString alloc] initWithContentsOfFile:str encoding:NSUTF8StringEncoding error:&error];

    //初始化新的字符串

    NSString *newStr = @"快乐的山猫,快乐的吉米!外加快乐的自己!!";

    string = [NSString stringWithFormat:@"%@%@",string,newStr];

    [string writeToFile:str atomically:YES encoding:NSUTF8StringEncoding error:&error];

    if (error) {

        NSLog(@"%@",error);

    }

}


#pragma mark 写入数组

- (void)writeArray{

    NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/array.txt"];

    NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];

    [array writeToFile:str atomically:YES];

}


#pragma mark 读取数组

- (void)getArray{

    NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/array.txt"];

    NSArray *array = [[NSArray alloc] initWithContentsOfFile:str];

    NSLog(@"array == %@",array);

    [array release];

}


#pragma mark 写入字典

- (void)writeDictionary{

    NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/dic.txt"];

    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"cat",@"1",@"dog",@"2",@"tager",@"3", nil];

    [dic writeToFile:str atomically:YES];

}


#pragma mark 读取字典

- (void)getDictionary{

    NSString *str = [NSString stringWithFormat:@"%@%@",[[self getPathOfDocuments] firstObject],@"/dic.txt"];

    NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:str];

    NSLog(@" dic == %@",dic);

}


#pragma mark 写入data

- (void)writeData

{

    NSString *str = [NSString stringWithFormat:@"%@data",[[self getPathOfDocuments] firstObject]];

    NSString *string = @"那个谁,说你呢!就是那个谁!!";

    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];//string转换为UTF8二进制编码格式

    [data writeToFile:str atomically:YES];//写入文件

}


#pragma mark 读取data

- (void)readData

{

    NSString *str = [NSString stringWithFormat:@"%@data",[[self getPathOfDocuments] firstObject]];

    NSData *data = [NSData dataWithContentsOfFile:str];

    NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];//data转换为字符串

    NSLog(@"string == %@", string);

}



- (void)userDefaultsWrite

{

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setObject:@"dragon" forKey:@"name"];

    

    //同步存储(默认是异步)

    [defaults synchronize];

}


- (void)readUserDefauts

{

    NSString *value = [[NSUserDefaults standardUserDefaults] objectForKey:@"name"];

    NSLog(@"%@", value);

}



2.复杂类型对象的存储


//归档,即将自己创建的model类对象转换为二进制格式,通过二进制格式进行存储

- (void)archiveObject{

    

    Student *stu = [[Student alloc]init];

    stu.name = @"cat";

    stu.sex = @"f";

    stu.age = 20;

    

    //NSArray *arr = [NSArray arrayWithObject:stu];

    

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:stu];

    

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *str = [path firstObject];


    str = [NSString stringWithFormat:@"%@/model",str];

    [data writeToFile:str atomically:YES];

}

//解档。将归档后的二进制文件解当为相对应的model类型对象

- (void)unarchiveObject{

    NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *str = [path firstObject];

    str = [NSString stringWithFormat:@"%@/model",str];

    

    NSData *data = [NSData dataWithContentsOfFile:str];

    

    Student *model = [NSKeyedUnarchiver unarchiveObjectWithData:data];

    NSLog(@"model == %@",model.name);

}


@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值