iOS知识点总结——数据存储



iOS知识点总结——数据存储    

在iOS开发中数据的存储有很多种,最常见的无非是NSUserDefault 、Plist、 DB、 写文件 、 CoreData几种,以下分别对几种方式的用途及用法进行说明:

1. NSUserDefault

NSUserDefaults类用于保存应用程序设置和属性以及用户数据。例如,你可以存储用户在应用程序中使用的图片或默认颜色方案。这些对象存储在iOS所谓的“defaults系统”中。iOS的defaults系统在整个app中都是可用的,因此存放到defaults系统中的数据也是整个应用程序生命周期中可用的。也就是说,无论用户关闭程序还是关机,在用户再次打开程序或开机后这些数据仍然存在。NSUserDefaults可以存储的数据类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary、BOOL等。如果你想保存其他类型,如UIImage,你应该进行编码(即archive),或者将它转换为NSData、NSNumber或者NSString。

NSUserDefault的用法很简单, [[NSUserDefaults standardUserDefaults]setObject:obj forKey:@“”];可以根据你存储的数据类型不同而引用不同的方法,读取NSUserDefault的方法也很简单[[NSUserDefault standardUserDefaults]objectForkey:@“”];

2.Plist文件的读写

  Plist文件在iOS中使用非常之广泛,在做iOS开发时,经常用到到plist文件,  那plist文件是什么呢? 它全名是:Property List,属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为。plist,因此通常被称为 plist文件。文件是xml格式的。

Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息

在iOS开发中Plist文件的读写分为两种,一种是在本地工程文件中已经有Plist文件,直接读写,第二种是用户将数据存储为Plist文件放在沙盒中,下面对两种Plist文件的读写代码:

(1)本地Plist文件读写

 读:

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Plistname" ofType:@"plist"];

    NSMutableDictionary *data = [[[NSMutableDictionary alloc] initWithContentsOfFile:plistPath] autorelease];

    return data;

写:

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString *path=[paths   objectAtIndex:0];

    NSString *filename=[path stringByAppendingPathComponent:plistName];

    NSFileManager* fm = [NSFileManager defaultManager];

    [fm createFileAtPath:filename contents:nil attributes:nil];


        //创建一个dataArr,写到plist文件里,注意这里的dataArr是用户要写入的数据,也可以是dic

    [dataArr writeToFile:filename atomically:YES];


(2)用户自己存储和读取沙盒中的Plist文件

写:

   //获取应用程序沙盒的Documents目录

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString *plistPath1 = [paths objectAtIndex:0];

    //得到完整的文件名

    NSString *filename=[plistPath1 stringByAppendingPathComponent:plistName];

    //输入写入

    [dic writeToFile:filename atomically:YES];

读:

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString *path=[paths objectAtIndex:0];

    NSString *filename=[path stringByAppendingPathComponent:@"StockData.plist"];

    //读文件

    NSMutableDictionary *data= [NSDictionary dictionaryWithContentsOfFile:filename];

    return data;

从上述代码我们可以看出来,在读取plist文件的时候主要是获取的路径不一样,前者是获取了工程文件的路径,后者是获取本地沙盒文件的路径。在写Plist文件的时候,前者需要创建一个NSFileManager对象,而后者是不需要创建这种管理对象的。


3. DataBase

     任何应用程序的开发都需要有一个数据存储单元,无论是Web应用还是移动端应用,特别是在一些需要有大量数据的情况下,iOS开发采用轻量型数据库Sqlite(Android和Win8开发也采用该数据库),对于Sqlite的操作,主要有两种方式,一是采用Sqlite命令直接操作,二是采用FMDB进行操作,后者使用非常之广泛,在笔者所经历的程序中全部采用的是FMDB进行数据管理,对于FMDB的使用方法已经无从介绍,可以在https://github.com/ccgus/fmdb 上查找到。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值