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,归档和解档,对于项目开发中如果要存储一些文件,比如图片,音频,视频等文件的时候就需要用到文件存储了.文件沙盒存储主要存储非机密数据,大的数据. ...
随机推荐
- dedecms自定义模型之独立模型在首页、列表页、内容调用内容
dedecms关于自定义模型(独立模型)的首页.列表页.内容怎么调用?在后台自定义模型(独立模型)的建立及自定义字段的添加比较简单,需要注意两点: (1)如果某个字段需要在前台列表页显示,则在前台参数 ...
- Selenium_多线程执行测试用例
多线程执行测试用例 这里以百度搜索为例,通过不同的浏览器来启动不同的线程. #!/usr/bin/env python # _*_ coding:utf-8 _*_ __author__ = 'Yin ...
- Python输入/输出
1.在python2.x中raw_input( )和input( ),两个函数都存在,其中区别为 raw_input( )---将所有输入作为字符串看待,返回字符串类型 input( )-----只能 ...
- win7下scheme环境配置
运行lisp方言--scheme,在windows下,用eclipse. 1.eclipse装好 2.eclipse安装插件scheme48 development took, http://www. ...
- 一个带bash,带glibc,中国时区,非root用户可运行crond命令的基于alpine镜像的Dockerfile
这个镜像现在说起来简单, 带bash(增加执行脚本的兼容性,带GLIBC,中国时区,非root用户可运行crond命令-安全) 但让我开始陷入时,真的让我有段时间有点爆了. 比如,将filebeat文 ...
- bms_output.put_line使用方法
https://blog.csdn.net/sxww321/article/details/4020300
- javascript 去除最后一个字符自定义的方法
//公共去除最后字符方法 function dtrim(str, s){ var reg = eval("/"+s+"$/gi"); str=str.repla ...
- BZOJ 1036: [ZJOI2008]树的统计Count (树链剖分模板题)
1036: [ZJOI2008]树的统计Count Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 14982 Solved: 6081[Submit ...
- 用 Java 实现一个冒泡排序算法
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面.即首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将小数放前,大数放后,如 ...
- Hive分区和桶的概念
Hive 已是目前业界最为通用.廉价的构建大数据时代数据仓库的解决方案了,虽然也有 Impala 等后起之秀,但目前从功能.稳定性等方面来说,Hive 的地位尚不可撼动. 其实这篇博文主要是想聊聊 S ...