iOS数据持久化——属性列表

本文详细介绍了 iOS 开发中 plist 文件的应用方式,包括手动添加 plist 文件的方法、利用 NSUserDefaults 类自动保存为 plist 文件的技巧以及如何直接将数据写入 plist 文件。通过具体的代码示例,帮助读者更好地理解和掌握 plist 文件在 iOS 开发中的使用。

###1、属性列表(plist) iOS提供了一种plist格式的文件(属性列表)用于存储轻量级的数据,并且只能保存NSDictionary、NSArray、NSString、NSNumber、Boolean、NSData、NSDate 类型的数据。将这些类型的数据保存为plist格式文件,该格式保存的数据可以直接使用NSDictionary和NSArray读取。

  • ####1.1 手动添加plist文件

    • #####创建文件: 新建文件-->Resource-->Property List 输入图片说明

    • #####添加数据: plist文件的根类型只能是NSArray或NSDictionary 输入图片说明输入图片说明

    • #####读取数据: 将plist文件中的数据读入对应的根类型

    	   // 1、获取文件所在的路径,Resource:文件名称、Type:文件格式
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"userInfos" ofType:@"plist"];
    
    // 2、从路径中获取对应格式的数据
    
    // 如果Root为NSArray,则使用数组保存
    NSArray *infos = [NSArray arrayWithContentsOfFile:filePath];
    NSLog(@"%@",infos);
    
    // 如果Root为NSDictionary,则使用字典保存
    NSDictionary *infoDic = [NSDictionary dictionaryWithContentsOfFile:filePath];
    NSLog(@"%@",infoDic);
    
  • ####1.2 使用NSUserDefaults保存为pist文件 iOS中除了手动添加plist文件外,还提供了 NSUserDefaults 类来将数据保存为plist文件。NSUserDefaults 将自动生成plist文件,该文件保存在沙盒目录中的Library/Preferences目录中。

    • #####创建NSUserDefaults对象 NSUserDefaults是一个单例对象,项目中每次使用都是同一个。也就是说使用NSUserDefaults 保存的数据都是在同一个plist文件中,所有使用时要注意。
     NSUserDefaults *deaults = [NSUserDefaults standardUserDefaults];
    	```	
    
    	* #####设置保存数据
    	NSUserDefaults 生成的plist的Root是字典类型,所有数据都是以键值对的方式设置的,保存的数据类型也只能是plist文件支持的数据类型,所以不能保存自定义的数据类型。
    
    

    // 保存对象类型数据 [deaults setObject:@"保存的字符串" forKey:@"string"]; [deaults setObject:@100 forKey:@"number"]; NSArray *array = @[@1,@2,@3,@4]; [deaults setObject:array forKey:@"array"]; NSDictionary *dic = @{@"key1":@"value1",@"key2":@"value2"}; [deaults setObject:dic forKey:@"dic"];

    // 保存基本类型数据,最终在plist中保存的是NSNumber类型。 [deaults setBool:YES forKey:@"bool"]; [deaults setInteger:100 forKey:@"integer"]; [deaults setDouble:3.33333 forKey:@"double"]; [deaults setFloat:3.15 forKey:@"float"];

    
    	* #####读取保存的数据
    	因为 NSUserDefaults 保存的Root为字典,所有取值时根据对应的键去取值。不管之前保存的类型是可变或者是不可变,读取出来的数据类型都是不可变的了。
    
    

    NSString *str = [deaults objectForKey:@"string"]; NSArray *arr = [deaults objectForKey:@"array"];

    
    	* #####移除保存的数据
    
    

    [deaults removeObjectForKey:@"string"]; [deaults removeObjectForKey:@"array"];

    
    	* #####同步数据
    	每次使用 NSUserDefaults 添加、修改或者删除数据后都需要对数据同步,防止数据没有及时更新,操作如下:
    
    

    [deaults synchronize];

    
    
  • ####1.3 直接将数据写入plist文件 常用的Foundation类(NSString、NSArray、NSDictionary等)都有一个writeToFile:atomically: 方法,用于将数据持久保存到指定的文件中。

    	// 1、创建文件保存的文件路径
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSString *filePath = [docPath stringByAppendingPathComponent:@"test.plist"];
    
    // 2.设置数据
    NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
    [userInfo setObject:@"张三" forKey:@"userName"];
    [userInfo setObject:@"123456789" forKey:@"userPass"];
    [userInfo setObject:@"13577893212" forKey:@"tel"];
    
    // NSArray *infos = @[@100,@200,@300,@400];
    
    // 3.将数据写入文件
    [userInfo writeToFile:filePath atomically:YES];
    
    //[infos writeToFile:filePath atomically:YES];
    

转载于:https://my.oschina.net/u/1993356/blog/611414

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值