• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

objectiveC中数据持久化方式1--对象归档

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

第一、数据持久化的方式:

NSKeyedArchiver--对象归档

属性列表化(NSArray、NSDictionary、NSUserDefault)

SQlite数据库、CoreData数据库

其中第一、二种方式针对数据量小的数据,第三种方式针对大数据,归档的文件是加密的,属性列表明文的。

归档的形式;

对foundation库中对象进行归档

自定义对象的归档(需要实现归档协议:NSCoding)

第二 最简单归档和解归档的实现代码:

 

    @autoreleasepool {
        NSString *homeDictory=NSHomeDirectory();
        NSArray *array=[NSArray arrayWithObjects:@"one",@"two",@"three",nil];
        NSString *homePath=[homeDictory stringByAppendingPathComponent:@"Desktop/test.archive"];
        if(![NSKeyedArchiver archiveRootObject:array toFile:homePath])
        {
            NSLog(@"归档失败");
        }else
        {
            NSArray *data=[NSKeyedUnarchiver unarchiveObjectWithFile:homePath];
            NSLog(@"%@",data);
        
        }
        
        NSLog(@"Hello, World!");
        
    }

第四、复杂的内容归档

 

使用NSData实例作为归档的存储数据,添加归档的内容(设置key和value),完成归档,将归档内容存入磁盘

解归档步骤:从磁盘读取文件,生成NSData实例,根据data实例创建或初始化归档实例,解归档,根据key访问value的值

 

        NSString *homeDictory=NSHomeDirectory();
        NSString *homePath=[homeDictory stringByAppendingPathComponent:@"Desktop/usertest.archive"];
        
        NSMutableData *data=[NSMutableData data];
        NSKeyedArchiver *archiver=[[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
        
        NSArray *nameArray=[NSArray arrayWithObjects:@"andy",@"yang", nil];
        [archiver encodeInt:100 forKey:@"age"];
        [archiver encodeObject:nameArray forKey:@"names"];
        [archiver finishEncoding];
        [archiver release];
        
        if ([data writeToFile:homePath atomically:YES])
        {

            NSData *data2=[NSData dataWithContentsOfFile:homePath];
            NSKeyedUnarchiver *unarchiver=[[NSKeyedUnarchiver alloc] initForReadingWithData:data2];
            int age=[unarchiver decodeIntForKey:@"age"];
            NSArray *array2=[unarchiver decodeObjectForKey:@"names"];
            NSLog(@"%d",age);
            NSLog(@"%@",array2);
            [unarchiver release];
        } else
        {
            
            NSLog(@"write to file wrong");
        }
                
        NSLog(@"Hello, World!");
        
    }


 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap