您的位置:首页 > 移动开发 > IOS开发

iOS中的数据持久化,归档和反归档

2015-02-05 10:34 309 查看
- (void)viewDidLoad {

    [super
viewDidLoad];

    // Do any additional setup after loading the view.

    

    //打印当前应用程序的沙盒路径

    NSLog(@"%@",
NSHomeDirectory());

    

    //沙盒:在一定范围内可以随意做任何事

    

    //iOS程序的沙盒指的就是应用程序的文件操作文件夹,
在文件夹内可以读写任何内容, 但是完全不能访问其他应用程序的沙盒文件夹

    

    //Documents:跟用户相关的一些文件,
用户设置的对这个app的偏好设置.
用户的一些文本信息. 最好不要存储空间占用比较大的文件比如视频/音频等等

    

    //Library:给开发者使用的,
用来存储一些东西的文件夹

    

    //Caches:缓存文件夹,
用户看过的一些图片, 音频,
视频, 都可以存储在这个文件夹中.一般的app,
清除缓存意思就是清除这个文件夹的所有内容

    

    //Preferences:
给开发者存储一些内容, NSUserDefaults保存的信息都在这个文件夹中

    

    //    [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:<#(NSString *)#>]

    

    //tmp:临时文件夹,
存储网络请求过程中的一些临时文件. app版本更新的时候,
会直接清空tmp文件夹.

    //简单对象写入本地

    

    //NSString, NSNumber, NSDictionary, NSArray, NSData;

    

    //1.拼接一个存储路径

    

    //系统提供了一个函数,
可以直接返回某一个沙盒文件夹的路径

    

    //返回值:
找到的路径组成的数组, 如果搜索的是系统的沙盒文件夹路径,
数组中只有一个元素.

    

    //参数1:搜索沙盒中的哪个文件夹

    //参数2:搜索的范围

    //参数3:返回的是相对路径还是绝对路径

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

    
   
NSLog(@"%@", arr);

    

    //获取文
ccfa
件路径

    

    //取出documents文件夹的路径
   
NSString *docPath = [arr
lastObject];

    

    //拼接一个文件的路径

    
   
NSString *txtPath = [docPath
stringByAppendingString:@"/123.txt"];

    

    //2.按照路径写入

    

    NSString *str =
@"aa";

    

    //参数1:要写入的路径

    //参数2:是否对写入的文件进行写保护

    //参数3:编码格式

    //参数4:错误信息
   
NSError *error = nil;

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

    

    //数组写入本地

    
   
NSArray *array = [NSArray
arrayWithObjects:@"a",
@"b",
@"c",
nil];

    NSString *arrPath = [docPath
stringByAppendingPathComponent:@"suibian.plist "];

    //写入本地
    [array
writeToFile:arrPath
atomically:YES];

    

    

    

    

    //创建boss对象
   
Boss *boss = [[Boss
alloc] init];

    
    boss.name =
@"ww";
    boss.number =
@"20";
    boss.sex =
@"man";

    

    //
将复杂对象写入本地的工具

    

    //参数1:要写入本地的对象

    //参数2:要写入的路径

    NSString *bossPath = [docPath
stringByAppendingPathComponent:@"boss.aa"];

    

    //归档类
   
BOOL result = [NSKeyedArchiver
archiveRootObject:boss
toFile:bossPath];

    
   
NSLog(@"复杂对象写入本地:%d", result);

    
    [boss
release];

    

    //反归档类

    //从本地读取数据产生一个新的复杂对象
   
Boss *bossReturn = [NSKeyedUnarchiver
unarchiveObjectWithFile:bossPath];
   
NSLog(@"%@", bossReturn.name);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息