IOS编程 之 本地存储

来源:互联网 发布:北大青鸟网络管理 编辑:程序博客网 时间:2024/05/16 12:08
-(void)dealloc{    [super dealloc];}- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        // Custom initialization    }    return self;}- (void)viewDidLoad{    [super viewDidLoad];    // Do any additional setup after loading the view.    self.navigationController.navigationBar.translucent = NO;    [self getDocumentsPath];    [self writeString];    [self writeArray];    [self writeDic];    [self writeToString];    [self writeData];    [self userDefaultsWrite];       [self archiveObject];    [self unarchiveObject];}- (void)getDocumentsPath{    //获取沙盒路径    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSLog(@"1===%@",paths);    }#pragma mark 字符串的写入和读取//字符串的写入和读取- (void)writeString{    //获取文件地址    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);    //获取第一个字符串    NSString *string = [paths objectAtIndex:0];    //创建存储字符串的路径    string = [NSString stringWithFormat:@"%@%@",string,@"/text.txt"];        NSError *error = nil;    NSString *value = @"范总擦黑板";    //写入到文件中    [value writeToFile:string atomically:YES encoding:NSUTF8StringEncoding error:&error];    if (error) {        NSLog(@"error == %@",error);    }    //字符串的读取        NSString *read = [[NSString alloc]initWithContentsOfFile:string encoding:NSUTF8StringEncoding error:&error];    NSString *read1 = [NSString  stringWithContentsOfFile:string encoding:NSUTF8StringEncoding error:&error];    NSLog(@"%@",read1);        NSLog(@"读取字符串 :%@",read);    [read release];    }#pragma mark 数组的写入和读取//数组的写入和读取- (void)writeArray{    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *string = [paths objectAtIndex:0];    //创建存储数组的路径    string = [NSString stringWithFormat:@"%@%@",string,@"/arr.txt"];    //定义一个数组    NSArray *array = [NSArray arrayWithObjects:@"KJJ",@"PYT", nil];    //写入数组    [array writeToFile:string atomically:YES ];        //读取    NSArray *read = [[NSArray alloc]initWithContentsOfFile:string];    NSLog(@"读取数组 :%@",read);    [read release];}#pragma mark 字典的写入和读取//字典的写入和读取- (void)writeDic {    //获取文件地址    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);     //获取第一个字符串    NSString *string = [paths firstObject];     //创建存储字符串的路径    string = [NSString stringWithFormat:@"%@%@",string,@"/dic.txt"];    //定义一个字典    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"A",@"a",@"B",@"b"                         , nil];        [dic writeToFile:string atomically:YES];    //    NSDictionary *read = [[NSDictionary alloc]initWithContentsOfFile:string];    NSLog(@"读取字典 :%@",read);    [read release];}- (void)writeToString{    //先读取 在拼接  然后重新写入    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *string = [paths firstObject];        string = [NSString stringWithFormat:@"%@/text.txt",string];        NSString *write = @"搜噶";    [write writeToFile:string atomically:YES encoding:NSUTF8StringEncoding error:nil];        NSLog(@"%@",string);    }//二进制对象的写入- (void)writeData {    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *string = [paths firstObject];    string = [NSString stringWithFormat:@"%@%@",string,@"/data"];        //将字符串转换为utf8类型的二进制编码格式    NSString *value = @"o ha yo gu za yi ma si";    //只有这一种方法    NSData *data = [value dataUsingEncoding:NSUTF8StringEncoding];    [data writeToFile:string atomically:YES];    NSLog(@"%@",data);        //读取    NSData *read = [NSData dataWithContentsOfFile:string];    //只有这一种方法    NSString *read1 = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];    NSLog(@"%@",read);    NSLog(@"%@",read1);    }- (void)userDefaultsWrite{    //轻量级存储 存储一些和登陆信息有关的 存储方式和字典一样    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    [defaults setObject:@"不得不爱" forKey:@"name"];    //同步存储    [defaults synchronize];    }- (void)readUserDefaults{    NSString *value = [[NSUserDefaults standardUserDefaults]objectForKey:@"name"];    NSLog(@"%@",value);}//复杂类型的对象存储  针对自己创建的类和对象  model//归档 即将自己创建的model类对象转换为二进制格式  通过二进制格式进行存储- (void)archiveObject{    Student *student = [[Student alloc]init];    student.name = @"金在中";    student.sex = @"男";    student.age = 20;    //NSArray *array = [NSArray arrayWithObjects:student, nil];    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:student];    //写入    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    NSString *string = [paths firstObject];    string = [NSString stringWithFormat:@"%@/model",string];    [data writeToFile:string atomically:YES];    }//解档  将归档后的二进制文件解档为相对应的model类型对象- (void)unarchiveObject{    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);    NSString *string = [paths firstObject];    string = [NSString stringWithFormat:@"%@/model",string];        NSData *data = [NSData dataWithContentsOfFile:string];        Student *model = [NSKeyedUnarchiver unarchiveObjectWithData:data];    NSLog(@"%@,%@,%d",model.name,model.sex,model.age);    }


本地存储之归档与解档

//归档协议 序列化协议- (void)encodeWithCoder:(NSCoder *)aCoder{    [aCoder encodeObject:self.name forKey:@"name"];    [aCoder encodeObject:self.sex forKey:@"sex"];    NSNumber *num = [NSNumber numberWithInt:self.age];//装换类型    [aCoder encodeObject:num forKey:@"age"];}//解档,反序列化- (id)initWithCoder:(NSCoder *)aDecoder{    if (self = [super init]) {        self.name = [aDecoder decodeObjectForKey:@"name"];//decode 反编码        self.sex = [aDecoder decodeObjectForKey:@"sex"];        NSNumber *num = [aDecoder decodeObjectForKey:@"age"];        self.age = [num intValue];                                    }    return self;}





0 0
原创粉丝点击