数据持久化方案

概论所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案:plist文件(属性列表)preference(偏好设置)NSKeyedArchiver(归档)SQLite 3CoreData沙盒在介绍各种存储方法之前,有必要说明
摘要由CSDN通过智能技术生成

概论

所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案:

plist文件(属性列表)

preference(偏好设置)

NSKeyedArchiver(归档)

SQLite 3

CoreData

沙盒

在介绍各种存储方法之前,有必要说明以下沙盒机制。iOS程序默认情况下只能访问程序自己的目录,这个目录被称为“沙盒”。

1.结构

既然沙盒就是一个文件夹,那就看看里面有什么吧。沙盒的目录结构如下:

 
 
 
  1. "应用程序包" 
  2. Documents 
  3. Library 
  4. Caches 
  5. Preferences 
  6. tmp 

2.目录特性

虽然沙盒中有这么多文件夹,但是没有文件夹都不尽相同,都有各自的特性。所以在选择存放目录时,一定要认真选择适合的目录。

"应用程序包": 这里面存放的是应用程序的源文件,包括资源文件和可执行文件。

 
 
 
  1. NSString *path = [[NSBundle mainBundle] bundlePath]; 
  2. NSLog(@"%@", path); 

Documents: 最常用的目录,iTunes同步该应用时会同步此文件夹中的内容,适合存储重要数据。

 
 
 
  1. NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject; 
  2. NSLog(@"%@", path); 

Library/Caches: iTunes不会同步此文件夹,适合存储体积大,不需要备份的非重要数据。

 
 
 
  1. NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject; 
  2. NSLog(@"%@", path); 

Library/Preferences: iTunes同步该应用时会同步此文件夹中的内容,通常保存应用的设置信息。

 
 
 
  1. tmp: iTunes不会同步此文件夹,系统可能在应用没运行时就删除该目录下的文件,所以此目录适合保存应用中的一些临时文件,用完就删除。 
  2. NSString *path = NSTemporaryDirectory(); 
  3. NSLog(@"%@", path); 

plist文件

plist文件是将某些特定的类,通过XML文件的方式保存在目录中。

可以被序列化的类型只有如下几种:

 
 
 
  1. NSArray; 
  2. NSMutableArray; 
  3. NSDictionary; 
  4. NSMutableDictionary; 
  5. NSData; 
  6. NSMutableData; 
  7. NSString; 
  8. NSMutableString; 
  9. NSNumber; 
  10. NSDate; 

1.获得文件路径

 
 
 
  1. NSString *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).firstObject; 
  2. NSString *fileName = [path stringByAppendingPathComponent:@"123.plist"]; 

2.存储

 
 
 
  1. NSArray *array = @[@"123", @"456", @"789"]; 
  2. [array writeToFile:fileName atomically:YES]; 

3.读取

 
 
 
  1. NSArray *result = [NSArray arrayWithContentsOfFile:fileName]; 
  2. NSLog(@"%@", result); 

4.注意

只有以上列出的类型才能使用plist文件存储。

存储时使用writeToFile: atomically:方法。 其中atomically表示是否需要先写入一个辅助文件,再把辅助文件拷贝到目标文件地址。这是更安全的写入文件方法,一般都写YES。

读取时使用arrayWithContentsOfFile:方法。

Preference

1.使用方法

 
 
 
    • 0
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值