IOS沙盒存储

技术文档网 2021-06-30
介绍

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)
    

相关文章

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod

随机推荐

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod