iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据

时间:2024-04-03 22:16:57

iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据

1、初识沙盒:(1)、存储在内存中的数据,程序关闭,内存释放,数据就会丢失,这种数据是临时的。要想数据永久保存,将数据保存成文件,存储到程序的沙盒里就可实现这一功能;

(2)、沙盒的本质就是一个文件夹,名字是随机分配的。

(3)、沙盒构成:

Document : 存储用户数据,需要备份的信息

Library/Caches:存储缓存文件,程序专用的支持文件

Library/Preferences :存储应用程序的偏好设置文件

.app :程序包(iOS8时,app不存储在沙盒里, 有单独的文件夹存储所以程序的app包)

tmp : 存储临时文件。比如:下载的zip包,解压后可删除。

参考;

Documents 目录:将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
AppName.app 目录:应用程序的程序包目录,包含应用程序的本身。由于应用程序必须经过签名,所以在运行时不能对这个目录中的内容进行修改,否则可能会使应用程序无法启动。
Library 目录:这个目录下有两个子目录:Caches 和 Preferences
    Preferences 目录包含应用程序的偏好设置文件。不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类来取得和设置应用程序的偏好
    Caches 目录用于存放应用程序专用的支持文件,保存应用程序再次启动过程中需要的信息。
   tmp 目录:这个目录用于存放临时文件,保存应用程序再次启动过程中不需要的信息。

    2.获取文件路径的数组(返回目录)

        //参数一:搜索的目录

        //参数二:搜索的范围

       //参数三:YES:表示绝对路径,NO:表示相对路径

(1).存储字符串:

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

    //得到文件的具体路径(默认在数组的最后一个)

    NSString *document = [array lastObject];

    //拼接我们自己创建的文件的路径

    NSString *documentPath = [document stringByAppendingPathComponent:@"test.txt"];

    NSString *str = @"你好, 我是沙盒Document文件";

    [str writeToFile:documentPath atomically:YES encoding:NSUTF8StringEncoding error:nil];

        NSLog(@"%@", documentPath);

*通过输出的地址-->前往文件夹 就可找到具体文件的存储地方;如下图:

iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据

(2).存储数组:

//前三步同上:

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

     NSString *documents = [arraylastObject];

      NSString *documentPath = [documentsstringByAppendingPathComponent:@"arrayXML.xml"];

     //第四步:准备好要存到本地的数组

    NSArray *dataArray = [NSArray arrayWithObjects:@"你好", @"我是", @"沙盒", nil];

     //第五步:将数组存入到指定的本地文件

    [dataArray writeToFile:documentPath atomically:YES];

 //第六步:可对已经存储的数组进行查询等操作

    NSArray *resultArray = [NSArray arrayWithContentsOfFile:documentPath];

    NSLog(@"%@", documentPath);

查找如下图:***数组存储到本地之后是以xml形式存储的,不论文件是txt还是xml;

    iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据

(3).存储字典:

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

    NSString *documents = [array lastObject];

    NSString *documnetPath = [documents stringByAppendingPathComponent:@"dic.plist"];

//准备要存入的字典

    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"Kevin",@"name",@"男",@"gender",nil

 


];

//将字典存入指定的本地文件

    [dic writeToFile:documnetPath atomically:YES];

        //可对已经存储的字典操作

    NSDictionary *resultDic = [NSDictionary dictionaryWithContentsOfFile:documnetPath];

    NSLog(@"%@", documnetPath);

   存储结果如下图:

iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据