iOS开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据
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开发:沙盒机制以及利用沙盒存储字符串、数组、字典等数据相关推荐
- iOS开发事件分发机制—响应链—手势影响
1.提纲 什么是iOS的事件分发机制 ? 一个事件UIEvent又是如何响应的? 手势对于响应链有何影响? 2.事件分发机制 2.1.来源 以直接触摸事件为例: 当用户一个手指触摸屏幕是会生成一个UI ...
- 1211笔记关于//modal//更改窗口的根控制器//数据存取//Plist属性列表//-“沙盒机制”//plis属性列表//偏好设置//归档普通对象//联系人数据存储//协议与回调函数...
笔记的完整版pdf文档下载地址:https://www.evernote.com/shard/s227/sh/aba2aa01-4d96-429d-9bbd-2f285c7c0c79/65772262 ...
- ios开发---URL Schemes 使用详解-app协议
用原生 iOS 的人分两种,懂 URL Schemes 的和不懂的. 前者是「魔法师」,后者是「麻瓜」. URL Schemes 应用在 iOS 上已经很久了.对于使用者来说,在沙盒机制下的 iOS ...
- iOS开发系列--网络开发(转)
iOS开发系列--网络开发 2014-10-22 08:34 by KenshinCui, 66365 阅读, 56 评论, 收藏, 编辑 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微 ...
- iOS开发系列--网络开发
概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...
- IOS开发基础之SQLite3数据库的使用增删改查
IOS开发基础之SQLite3数据库的使用增删改查 ios开发我们可能会使用到数据库进行持久化存储.sqlite3 是轻量级的数据库. 今天我们来介绍sqlite3 数据库.此方法跟java的增删改查 ...
- iOS开发库和框架大全
音频 AudioBus:下一代 App 到 App 的实时音频路由.官网 AudioKit:一个强大的音频合成,处理和分析的工具集.官网 EZAudio:一个基于 Core Audio 的 iOS/O ...
- iOS开发中的神兵利器
苹果商店免费下载:https://itunes.apple.com/cn/app/id1209739676 网易云课程同名视频教程:http://study.163.com/course/course ...
- IOS开发基础之英雄展示完整版
IOS开发基础之英雄展示完整版 // // ViewController.m // 15-英雄展示-单组数据 // // Created by 鲁军 on 2021/2/3. //#import &q ...
最新文章
- 如何设计恒流源输出电路?
- Matlab实现图像边缘检测
- pandas计算滑动窗口中的最大值实战(Rolling Maximum in a Pandas Column):计算单数据列滑动窗口中的最大值、计算多数据列滑动窗口中的最大值
- 正在看的一些书(值得推荐)
- sublime python3 输入换行不结束
- RocketMQ Consumer 负载均衡算法源码学习 -- AllocateMessageQueueConsistentHash
- android studio异步单元测试,在Android Studio中可以进行单元测试
- leetcode 128最长连续序列
- [转载]Web 研发模式演变
- JavaSE03、数组,引用,数组拷贝,二维数组
- CreateCompatibleDC用法[转]
- java 数组效率_java数组复制的四种方法效率对比
- bzoj 2115: [Wc2011] Xor(DFS+线性基)
- openstack Essex中nova-volume
- 频段、信道带宽、EARFCN、频段和EARFCN之间的换算
- iOS APP 逆向安全杂谈
- python画正切函数_在matplotlib中绘制tan
- 《App后台开发运维和架构实践》资源汇总
- FreeCAD源码分析:FEM模块
- 如何区分网线是几类的_怎么看网线是几类网线?
热门文章
- 使用man在线手册页
- Microsoft Platform SDK Febrary 2003更新vc6的SDK网址
- opencv 检测直线、线段、圆、矩形
- mpi并行 java_【并行计算】用MPI进行分布式内存编程(一)
- 轻量级mysql服务_Navicat连接阿里云轻量级应用服务器mysql
- c语言神州行用户,神州行焕新出发 你行我行神州行折射品牌自信心
- python error_python error整理
- android 编程klinon,android - 您尚未接受以下SDK组件的许可协议
- android c聊天功能,Android实现简单C/S聊天室应用
- Java项目:嘟嘟二手书商城系统(java+JSP+Springboot+maven+mysql+ThymeLeaf+FTP)