[IOS]Swift之沙盒与数据存储

时间:2022-05-07 22:12:15

//转载:http://www.helloswift.com.cn/swiftmanual/2015/0208/3486.html

应用沙盒结构分析

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

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

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

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

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

IOS中的数据存储

1、存储为plist属性列表

 

[objc] view plaincopy [IOS]Swift之沙盒与数据存储[IOS]Swift之沙盒与数据存储
 
  1. func saveWithFile() {  
  2.     /// 1、获得沙盒的根路径  
  3.     let home = NSHomeDirectory() as NSString;  
  4.     /// 2、获得Documents路径,使用NSString对象的stringByAppendingPathComponent()方法拼接路径  
  5.     let docPath = home.stringByAppendingPathComponent("Documents") as NSString;  
  6.     /// 3、获取文本文件路径  
  7.     let filePath = docPath.stringByAppendingPathComponent("data.plist");  
  8.     var dataSource = NSMutableArray();  
  9.     dataSource.addObject("衣带渐宽终不悔");  
  10.     dataSource.addObject("为伊消得人憔悴");  
  11.     dataSource.addObject("故国不堪回首明月中");  
  12.     dataSource.addObject("人生若只如初见");  
  13.     dataSource.addObject("暮然回首,那人却在灯火阑珊处");  
  14.     // 4、将数据写入文件中  
  15.     dataSource.writeToFile(filePath, atomicallytrue);  
  16.     println("\(filePath)");  
  17. }  

[objc] view plaincopy [IOS]Swift之沙盒与数据存储[IOS]Swift之沙盒与数据存储
 
  1. func readWithFile() {  
  2.     /// 1、获得沙盒的根路径  
  3.     let home = NSHomeDirectory() as NSString;  
  4.     /// 2、获得Documents路径,使用NSString对象的stringByAppendingPathComponent()方法拼接路径  
  5.     let docPath = home.stringByAppendingPathComponent("Documents") as NSString;  
  6.     /// 3、获取文本文件路径  
  7.     let filePath = docPath.stringByAppendingPathComponent("data.plist");  
  8.     let dataSource = NSArray(contentsOfFile: filePath);  
  9.     println("\(dataSource)");  
  10. }  

2、使用NSUserDefaults存储数据

 

 

[objc] view plaincopy [IOS]Swift之沙盒与数据存储[IOS]Swift之沙盒与数据存储
 
  1. func saveWithNSUserDefaults() {  
  2.     /// 1、利用NSUserDefaults存储数据  
  3.     let defaults = NSUserDefaults.standardUserDefaults();  
  4.     //  2、存储数据  
  5.     defaults.setObject("衣带渐宽终不悔", forKey"name");  
  6.     //  3、同步数据  
  7.     defaults.synchronize();  
  8. }  

[objc] view plaincopy [IOS]Swift之沙盒与数据存储[IOS]Swift之沙盒与数据存储
 
  1. func readWithNSUserDefaults() {  
  2.     let defaults = NSUserDefaults.standardUserDefaults();  
  3.     let name = defaults.objectForKey("name") as NSString;  
  4.     println("\(name)");  
  5. }  

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

 

 

[objc] view plaincopy [IOS]Swift之沙盒与数据存储[IOS]Swift之沙盒与数据存储
 
  1. /** 
  2. 归档数据 
  3. 需要实现NSCoding协议 
  4. */  
  5. func saveWithNSKeyedArchiver() {  
  6.     let home = NSHomeDirectory() as NSString;  
  7.     let docPath = home.stringByAppendingPathComponent("Documents") as NSString;  
  8.     let filePath = docPath.stringByAppendingPathComponent("book.data");  
  9.     let book = CFAddressBook(name: "Francis", call"199");  
  10.     /** 
  11.     *  数据归档处理 
  12.     */  
  13.     NSKeyedArchiver.archiveRootObject(book, toFile: filePath);  
  14. }  
[objc] view plaincopy [IOS]Swift之沙盒与数据存储[IOS]Swift之沙盒与数据存储
 
  1. /** 
  2. 反归档数据 
  3. */  
  4. func readWithNSKeyedUnarchiver() {  
  5.     let home = NSHomeDirectory() as NSString;  
  6.     let docPath = home.stringByAppendingPathComponent("Documents") as NSString;  
  7.     let filePath = docPath.stringByAppendingPathComponent("book.data");  
  8.     let book = NSKeyedUnarchiver.unarchiveObjectWithFile(filePath) as CFAddressBook;  
  9.     println("\(book.name), \(book.call)");  
  10. }  

 

4、SQlite3

5、CoreData