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);

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

(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;

(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开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据相关推荐

  1. iOS开发事件分发机制—响应链—手势影响

    1.提纲 什么是iOS的事件分发机制 ? 一个事件UIEvent又是如何响应的? 手势对于响应链有何影响? 2.事件分发机制 2.1.来源 以直接触摸事件为例: 当用户一个手指触摸屏幕是会生成一个UI ...

  2. 1211笔记关于//modal//更改窗口的根控制器//数据存取//Plist属性列表//-“沙盒机制”//plis属性列表//偏好设置//归档普通对象//联系人数据存储//协议与回调函数...

    笔记的完整版pdf文档下载地址:https://www.evernote.com/shard/s227/sh/aba2aa01-4d96-429d-9bbd-2f285c7c0c79/65772262 ...

  3. ios开发---URL Schemes 使用详解-app协议

    用原生 iOS 的人分两种,懂 URL Schemes 的和不懂的. 前者是「魔法师」,后者是「麻瓜」. URL Schemes 应用在 iOS 上已经很久了.对于使用者来说,在沙盒机制下的 iOS ...

  4. iOS开发系列--网络开发(转)

    iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 66365 阅读, 56 评论, 收藏, 编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微 ...

  5. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  6. IOS开发基础之SQLite3数据库的使用增删改查

    IOS开发基础之SQLite3数据库的使用增删改查 ios开发我们可能会使用到数据库进行持久化存储.sqlite3 是轻量级的数据库. 今天我们来介绍sqlite3 数据库.此方法跟java的增删改查 ...

  7. iOS开发库和框架大全

    音频 AudioBus:下一代 App 到 App 的实时音频路由.官网 AudioKit:一个强大的音频合成,处理和分析的工具集.官网 EZAudio:一个基于 Core Audio 的 iOS/O ...

  8. iOS开发中的神兵利器

    苹果商店免费下载:https://itunes.apple.com/cn/app/id1209739676 网易云课程同名视频教程:http://study.163.com/course/course ...

  9. IOS开发基础之英雄展示完整版

    IOS开发基础之英雄展示完整版 // // ViewController.m // 15-英雄展示-单组数据 // // Created by 鲁军 on 2021/2/3. //#import &q ...

最新文章

  1. 如何设计恒流源输出电路?
  2. Matlab实现图像边缘检测
  3. pandas计算滑动窗口中的最大值实战(Rolling Maximum in a Pandas Column):计算单数据列滑动窗口中的最大值、计算多数据列滑动窗口中的最大值
  4. 正在看的一些书(值得推荐)
  5. sublime python3 输入换行不结束
  6. RocketMQ Consumer 负载均衡算法源码学习 -- AllocateMessageQueueConsistentHash
  7. android studio异步单元测试,在Android Studio中可以进行单元测试
  8. leetcode 128最长连续序列
  9. [转载]Web 研发模式演变
  10. JavaSE03、数组,引用,数组拷贝,二维数组
  11. CreateCompatibleDC用法[转]
  12. java 数组效率_java数组复制的四种方法效率对比
  13. bzoj 2115: [Wc2011] Xor(DFS+线性基)
  14. openstack Essex中nova-volume
  15. 频段、信道带宽、EARFCN、频段和EARFCN之间的换算
  16. iOS APP 逆向安全杂谈
  17. python画正切函数_在matplotlib中绘制tan
  18. 《App后台开发运维和架构实践》资源汇总
  19. FreeCAD源码分析:FEM模块
  20. 如何区分网线是几类的_怎么看网线是几类网线?

热门文章

  1. 使用man在线手册页
  2. Microsoft Platform SDK Febrary 2003更新vc6的SDK网址
  3. opencv 检测直线、线段、圆、矩形
  4. mpi并行 java_【并行计算】用MPI进行分布式内存编程(一)
  5. 轻量级mysql服务_Navicat连接阿里云轻量级应用服务器mysql
  6. c语言神州行用户,神州行焕新出发 你行我行神州行折射品牌自信心
  7. python error_python error整理
  8. android 编程klinon,android - 您尚未接受以下SDK组件的许可协议
  9. android c聊天功能,Android实现简单C/S聊天室应用
  10. Java项目:嘟嘟二手书商城系统(java+JSP+Springboot+maven+mysql+ThymeLeaf+FTP)