Swift之沙盒与数据存储
应用沙盒结构分析
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之沙盒与数据存储的更多相关文章
- iOS沙盒及数据存储
时间久了容易忘,针对沙盒的相关实用技巧做一个记录和整理. 一.iOS数据存储常用方式 1.XML属性列表(plist) 不是所有对象都可以写入: 2.Preference(偏好设置) 本质还是通过“p ...
- 【Swift】沙盒缓存
本地sandbox缓存目录 沙盒の 主目录: po NSHomeDirectory() /Users/SpongeBob/Library/Developer/CoreSimulator/D ...
- iOS获取真机沙盒文件、获取真机本地数据
有时我们需要对真机内的数据进行分析,那么如何获取沙盒所有数据文件呢? 1.设备连接到电脑,打开xcode 2.打开window-devices 3.打开后,选择设备名,选择app,导出数据 4.最后拿 ...
- iOS开发 - 获取真机沙盒数据
今天要获取之前真机測试时写入沙盒的数据, 本来以为挺麻烦的. 后来捣腾了一下, 才知道原来这么简单... 以下直接看详细步骤. 前提: 真机已经通过USB和你的电脑连接上了! 1.进入Organize ...
- Android中WebView的跨域漏洞分析和应用被克隆问题情景还原(免Root获取应用沙盒数据)
一.前言 去年年底支付宝的被克隆漏洞被爆出,无独有偶就是腾讯干的,其实真正了解这个事件之后会发现,感觉是针对支付宝.因为这个漏洞找出肯定花费了很大劲,主要是因为支付宝的特殊业务需要开启了WebView ...
- 最全的iOS数据存储方法
目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Pr ...
- iOS初级数据持久化 沙盒机制 归档与反归档
数据持久化就是数据保存成文件,存储到程序中的沙盒中. 沙盒构成 Document 存储用户数据,需要备份的信息 Caches 缓存文件, 程序专用的支持文件 Temp 临时文件 通过代码查找程序沙盒的 ...
- iOS边练边学--应用数据存储的常用方式(plist,Preference,NSKeyedArchiver)其中的三种
iOS应用数据存储的常用方式: XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3--这里暂且不讲 Core D ...
- IOS数据存储之文件沙盒存储
前言: 之前学习了数据存储的NSUserDefaults,归档和解档,对于项目开发中如果要存储一些文件,比如图片,音频,视频等文件的时候就需要用到文件存储了.文件沙盒存储主要存储非机密数据,大的数据. ...
随机推荐
- echarts一些笔记
console.log(); 浏览器显示 $.ajax({ url : "ajax/echartWelcome.action", type : "post", ...
- MySQL约束笔记
MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列 · 查看表的字段信息:desc 表名; · 查看表的所有信息:show create table 表名; 添加主键约束:alter t ...
- 2015309南皓芯实验二 Java面向对象程序设计
一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.没有Linux基础的同学建议先学习< ...
- 搜索入门之dfs--经典的迷宫问题解析
今天来谈一下dfs的入门,以前看到的dfs入门,那真的是入门吗,都是把dfs的实现步骤往那一贴,看完是知道dfs的步骤了,但是对于代码实现还是没有概念.今天准备写点自己的心得,真的是字面意思--入门. ...
- 利用Octopress在github pages上搭建个人博客
利用Octopress在github pages上搭建个人博客 SEP 29TH, 2013 在GitHub Pages上用Octopress搭建博客,需要安装ruby环境.git环境等.本人在Fed ...
- day6作业--选课系统
角色:学校.学员.课程.讲师 要求: 1.创建北京.上海2所学校: 2.创建Linux,Python,go 3个课程,Linux\python在北京开,go在上海开: 3.课程包含,周期.价格,通过学 ...
- shell实现增加删除Linux系统用户脚本(密码为随机)
README shell环境下运行脚本,根据需求选择相应的功能. List \t\t create the userlist 这一步是必须执行的,脚本会识别本地当前目录下的文件 Useradd \t\ ...
- bzoj 1826
思路:贪心取最后出现的. #include<bits/stdc++.h> #define LL long long #define fi first #define se second # ...
- IOS 本地推送
// 1.打开本地推送并设置属性 NSString *str = @"本地推送的信息"; UIApplication *app = [UIApplication sharedApp ...
- NPE是什么
在编程中出现的空指针异常 Map类集合K/V能不能存储null值的情况,如下表格: remove元素要使用Iterator方式,如果并发操作,需要对Iterator对象加锁. Arrays.asLis ...