应用沙盒结构分析

1、应用程序包:包含了所有的资源文件和可执行文件

2、Documents:保存应用运行时生成的需要持久化的数据,iTunes同步设备时会备份该目录

3、tmp:保存应用运行时所需要的临时数据,使用完毕后再将相应的文件从该目录删除。应用没有运行,系统也可能会清除该目录下的文件,iTunes不会同步备份该目录

4、Library/Cache:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不备份该目录。一般存放体积大、不需要备份的非重要数据

5、Library/Preference:保存应用的所有偏好设置,IOS的Settings应用会在该目录中查找应用的设置信息。iTunes同步设备时会备份该目录

IOS中的数据存储

1、存储为plist属性列表

    func saveWithFile() {        /// 1、获得沙盒的根路径        let home = NSHomeDirectory() as NSString;        /// 2、获得Documents路径,使用NSString对象的stringByAppendingPathComponent()方法拼接路径        let docPath = home.stringByAppendingPathComponent("Documents") as NSString;        /// 3、获取文本文件路径        let filePath = docPath.stringByAppendingPathComponent("data.plist");        var dataSource = NSMutableArray();        dataSource.addObject("衣带渐宽终不悔");        dataSource.addObject("为伊消得人憔悴");        dataSource.addObject("故国不堪回首明月中");        dataSource.addObject("人生若只如初见");        dataSource.addObject("暮然回首,那人却在灯火阑珊处");        // 4、将数据写入文件中        dataSource.writeToFile(filePath, atomically: true);        println("/(filePath)");    }
    func readWithFile() {        /// 1、获得沙盒的根路径        let home = NSHomeDirectory() as NSString;        /// 2、获得Documents路径,使用NSString对象的stringByAppendingPathComponent()方法拼接路径        let docPath = home.stringByAppendingPathComponent("Documents") as NSString;        /// 3、获取文本文件路径        let filePath = docPath.stringByAppendingPathComponent("data.plist");        let dataSource = NSArray(contentsOfFile: filePath);        println("/(dataSource)");    }

2、使用NSUserDefaults存储数据

    func saveWithNSUserDefaults() {        /// 1、利用NSUserDefaults存储数据        let defaults = NSUserDefaults.standardUserDefaults();        //  2、存储数据        defaults.setObject("衣带渐宽终不悔", forKey: "name");        //  3、同步数据        defaults.synchronize();    }
    func readWithNSUserDefaults() {        let defaults = NSUserDefaults.standardUserDefaults();        let name = defaults.objectForKey("name") as NSString;        println("/(name)");    }

3、归档存储:对象需要实现NSCoding协议,归档对应encode,反归档对应decode

    /**    归档数据    需要实现NSCoding协议    */    func saveWithNSKeyedArchiver() {        let home = NSHomeDirectory() as NSString;        let docPath = home.stringByAppendingPathComponent("Documents") as NSString;        let filePath = docPath.stringByAppendingPathComponent("book.data");        let book = CFAddressBook(name: "Francis", call: "199");        /**        *  数据归档处理        */        NSKeyedArchiver.archiveRootObject(book, toFile: filePath);    }
    /**    反归档数据    */    func readWithNSKeyedUnarchiver() {        let home = NSHomeDirectory() as NSString;        let docPath = home.stringByAppendingPathComponent("Documents") as NSString;        let filePath = docPath.stringByAppendingPathComponent("book.data");        let book = NSKeyedUnarchiver.unarchiveObjectWithFile(filePath) as CFAddressBook;        println("/(book.name), /(book.call)");    }

4、SQlite3

5、CoreData

Swift之沙盒与数据存储的更多相关文章

  1. iOS沙盒及数据存储

    时间久了容易忘,针对沙盒的相关实用技巧做一个记录和整理. 一.iOS数据存储常用方式 1.XML属性列表(plist) 不是所有对象都可以写入: 2.Preference(偏好设置) 本质还是通过“p ...

  2. 【Swift】沙盒缓存

    本地sandbox缓存目录     沙盒の 主目录: po NSHomeDirectory()   /Users/SpongeBob/Library/Developer/CoreSimulator/D ...

  3. iOS获取真机沙盒文件、获取真机本地数据

    有时我们需要对真机内的数据进行分析,那么如何获取沙盒所有数据文件呢? 1.设备连接到电脑,打开xcode 2.打开window-devices 3.打开后,选择设备名,选择app,导出数据 4.最后拿 ...

  4. iOS开发 - 获取真机沙盒数据

    今天要获取之前真机測试时写入沙盒的数据, 本来以为挺麻烦的. 后来捣腾了一下, 才知道原来这么简单... 以下直接看详细步骤. 前提: 真机已经通过USB和你的电脑连接上了! 1.进入Organize ...

  5. Android中WebView的跨域漏洞分析和应用被克隆问题情景还原(免Root获取应用沙盒数据)

    一.前言 去年年底支付宝的被克隆漏洞被爆出,无独有偶就是腾讯干的,其实真正了解这个事件之后会发现,感觉是针对支付宝.因为这个漏洞找出肯定花费了很大劲,主要是因为支付宝的特殊业务需要开启了WebView ...

  6. 最全的iOS数据存储方法

    目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Pr ...

  7. iOS初级数据持久化 沙盒机制 归档与反归档

    数据持久化就是数据保存成文件,存储到程序中的沙盒中. 沙盒构成 Document 存储用户数据,需要备份的信息 Caches 缓存文件, 程序专用的支持文件 Temp 临时文件 通过代码查找程序沙盒的 ...

  8. iOS边练边学--应用数据存储的常用方式(plist,Preference,NSKeyedArchiver)其中的三种

    iOS应用数据存储的常用方式: XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3--这里暂且不讲 Core D ...

  9. IOS数据存储之文件沙盒存储

    前言: 之前学习了数据存储的NSUserDefaults,归档和解档,对于项目开发中如果要存储一些文件,比如图片,音频,视频等文件的时候就需要用到文件存储了.文件沙盒存储主要存储非机密数据,大的数据. ...

随机推荐

  1. matlab随笔

    主要是记录一些函数.(博客园的一些操作实在是太不方便了) cat函数:http://blog.sina.com.cn/s/blog_6b7dfd9d0100mnz7.html 联结两个数组 magic ...

  2. python版本共存

    要玩多版本最好使用虚拟环境,避免根python切换及包误安装的麻烦 1.直接安装实现 1.1 windows下 到官网(https://www.python.org/downloads/)下载,如py ...

  3. Linux下./configure && make && make install 编译安装和卸载

    正常的编译安装/卸载: 源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install).   configure文件是一个可执行的脚本文件,它有很多选项, ...

  4. Java工程师知识图谱

    一.Java工程师知识图谱(思维导图版) 二.Java工程师知识图谱(图文版) 三.Java工程师知识图谱(文字版) http://note.youdao.com/noteshare?id=615da ...

  5. 20165203《Java程序设计》第五周学习总结

    教材学习内容总结 第七章 内部类 注意内部类和外嵌类的关系: 外嵌类的成员变量和方法在内部类有效 内部类的类体不可以声明static变量和方法.外嵌类的类体可以用内部类声明对象. 内部类仅供它的外嵌类 ...

  6. 20155225 2016-2017-2《Java程序设计》课程总结

    20155225 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:新的开始 预备作业2:C语言学习回顾 预备作业3:Linux基础入门和虚拟机的安装 第一 ...

  7. 转58同城 mysql规范

    这里面都是一些很简单的规则,看似没有特别大的意义,但真实的不就是这么简单繁杂的工作吗? 军规适用场景:并发量大.数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一.基础规范 ( ...

  8. 【转】实践最有效的提高Android Studio运行、编译速度方案

    原文:https://blog.csdn.net/xwh_1230/article/details/60961723 实践最有效的提高Android Studio运行.编译速度方案 最有效提升Andr ...

  9. centos7 配置ftp访问

    vsftp安装 创建用户 并限定用户在自己的目录 1.查看是否已经安装了vsftpd vsftpd -version 2.安装vsftpd(CentOS7) yum install -y vsftpd ...

  10. 解决Linux中文显示乱码的问题

    1.直接执行 export LC_ALL=zh_CN.UTF8 #linux服务器中文显示乱码,但配置文件设置是中文的.解决办法 2.修改文件 修改/etc/sysconfig/i18n文件,确认信息 ...