IOS沙盒存储
iOS中的沙盒机制是一种安全体系。为了保证系统安全,iOS每个应用程序在安装时,会创建属于自己的沙盒文件(存储空间)。应用程序只能访问自身的沙盒文件,不能访问其他应用程序的沙盒文件,当应用程序需要向外部请求或接收数据时,都需要经过权限认证,否则,无法获取到数据。所有的非代码文件都要保存在此,例如属性文件plist、文本文件、图像、图标、媒体资源等,其原理是通过重定向技术,把程序生成和修改的文件定向到自身文件夹中。
每个APP的沙盒下面都有相似目录结构,如下图:
- 项目.plist
- Documents
- Library
- SystemData
- tmp
沙盒API
- 沙盒根路径
let home=NSHomeDirectory()
- document文档目录
```swift
let home=NSHomeDirectory()//获取沙盒根路径
//document文档目录--方法一
let documentPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory,
FileManager.SearchPathDomainMask.userDomainMask,true).last
//获取文档目录路径--方法二,沙盒根路径字符串拼接路径 let docPath = home+"/Documents/"
// 第三种获取路径方式 let fileManager = FileManager.default let urls = fileManager.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask) as [NSURL] if urls.count > 0{ print("--------(urls[0])") print("--------(urls)") }
// 第四种获取路径方式 do{ let url = try fileManager.url(for: FileManager.SearchPathDirectory.documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask, appropriateFor: nil, create: false) print("--------(url)") }catch{ }
* 缓存目录路径cache
```swift
let cachePath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory,
FileManager.SearchPathDomainMask.userDomainMask, true).last! as String
- library目录路径:包含cache和Preference
let libtraryPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.libraryDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)[0] as String
- 临时目录路径temp
let tempPath = NSTemporaryDirectory() as String
数据存储到偏好设置 Library/Preferencd
//偏好设置存储 let def=UserDefaults.standard def.set("aa", forKey: "a") def.synchronize() //获取值 let str = def.string(forKey: "a")
把数组存入到
沙盒
.plist文件中// 1、获得沙盒的根路径 let home=NSHomeDirectory()//获取沙盒根路径 //获取文档目录路径--方法二,沙盒根路径字符串拼接路径 let docPath = home+"/Documents/" // 3、获取文本文件路径 let filePath = docPath + "data.plist" let ar=["aa","ba","ca"] as NSArray//必须要转换成NSArray,否则不成功报错 // 4、将数据写入文件中 ar.write(toFile: filePath,atomically : true)
从
沙盒
中读取某个.plist文件// 1、获得沙盒的根路径 let home=NSHomeDirectory()//获取沙盒根路径 //获取文档目录路径--方法二,沙盒根路径字符串拼接路径 let docPath = home+"/Documents/" // 3、获取文本文件路径 let filePath = docPath + "data.plist" let ar=NSArray.init(contentsOfFile: filePath) print(ar)
相关文章
- 硅谷互联网公司的开发流程
开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro
- RESTful-表述性状态转移风格
REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即
- 稳定性思考
产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能
- Supervisor守护队列发邮件
安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et
- 安装libsodium,让服务器支持chacha20等加密方式
用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod
随机推荐
- 硅谷互联网公司的开发流程
开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro
- RESTful-表述性状态转移风格
REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即
- 稳定性思考
产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能
- Supervisor守护队列发邮件
安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et
- 安装libsodium,让服务器支持chacha20等加密方式
用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod