iOS数据持久化之一——plist文件 原

iOS数据持久化之一——plist文件

        iOS开发中,我们时常会将一些简单的数据进行持久化的存储,方便我们保存程序的一些配置和用户的一些数据,plist文件就是我们保存这些数据的最佳选择。

一、何为plist

        plist是一种文件格式,其内容规则是xml文件,后缀为.plist,因此,我们更习惯于成它问plist文件,在iOS开发中,这种文件常用来保存一些简单的配置数据,例如项目中的info.plist。

通过plist文件编辑器,我们可以很方便的查看和编辑层次清晰的plist文件。

二、通过操作plist文件进行数据持久化的几种方式

1、操作系统为我们准备的用户配置文件——NSUserDefaults

        对于NSUserDefaults,具体用法和一些小技巧在以前的一篇博客中有详细的描述,一般的用户配置信息,我们都会选择通过这种方式来进行持久化,地址如下:http://my.oschina.net/u/2340880/blog/411344

2、在项目包中手动创建一个plist文件,通过代码对其进行操作

        这种方式创建的plist文件非常自由且直观,我们可以创建多个根据功能进行分类存储,并且可以通过Xcode的可视化工具进行可视化的修改。

首先,我们新创建一个文件,在Resource中选择 Property List文件:

之后,我们通过Xcode,在其中添加一些数据:

通过代码,我们来获取这些数据:

 //获取myInfo文件地址
    NSString * path = [[NSBundle mainBundle]pathForResource:@"myInfo" ofType:@"plist"];
    NSMutableDictionary * dic =[NSMutableDictionary dictionaryWithContentsOfFile:path];
    NSLog(@"%@",dic);

打印结果如下:

这种方式添加的plist文件,我们只能在xcode中配置好,然后再程序中读取使用,但是不能在程序中修改这些数据,可以应用于一些固定的数据的存储,例如地图的属性,省市县列表等。

3、在沙盒目录中创建和使用plist文件

        我们还可以通过代码在沙盒中创建我们自己的plist文件,进行数据的存储。同时可以支持add,delete,replace,find等操作。

    //获取沙盒目录
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *plistPath1 = [paths objectAtIndex:0];
    
    //得到完整的文件名
    NSString *filename=[plistPath1 stringByAppendingPathComponent:@"my.plist"];
    NSDictionary * dic = @{@"my":@"haha"};
    [dic  writeToFile:filename atomically:YES];
    
    //取数据
    NSDictionary * getDic = [NSDictionary dictionaryWithContentsOfFile:filename];
    NSLog(@"%@",getDic);

打印如下:

这种方式无疑会更加安全,存取也更加自由。

专注技术,热爱生活,交流技术,也做朋友。 ——珲少 QQ群:203317592

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏繁花云

[记录]常用shell代码段

8700
来自专栏维C果糖

在 Windows 系统下安装 IntelliJ IDEA 的方法

首先,进入官网下载 IntelliJ IDEA 可执行文件:https://www.jetbrains.com/idea/ ? 如上图所示,进入“Downloa...

26050
来自专栏LhWorld哥陪你聊算法

Linux篇---ftp服务器的搭建

企业中linux搭建ftp服务器还是很实用的,所以本文针对centoos7和centoos6搭建服务器教程做个总结。

3.1K30
来自专栏张戈的专栏

http加速器Varnish的vcl配置小记(lnmp环境)

在以前的公司曾安装过 Varnish,可惜还没摸热就离职了,这次接着倒腾了下 Varnish,并搭建成功,特来记录下,以备后用。 一、测试环境 系统版本:Cen...

47350
来自专栏openshift持续集成

jenkins邮件插件中的内容参数设置

众所周知,Jenkins默认提供了一个邮件通知,能在构建失败、构建不稳定等状态后发送邮件。但是它本身有很多局限性,比如它的邮件通知无法提供详细的邮件内容、无法定...

98580
来自专栏北京马哥教育

你所不知道的linux匿名管道知识

豌豆贴心提醒,本文阅读时间5分钟 相信很多在linux平台工作的童鞋, 都很熟悉管道符 '|', 通过它, 我们能够很灵活的将几种不同的命令协同起来完成一件任...

31750
来自专栏DannyHoo的专栏

创建属于自己的静态库,并合并静态库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

15930
来自专栏腾讯Bugly的专栏

iOS崩溃堆栈符号化,定位问题分分钟搞定!

最近一段时间,在跟开发者沟通过程中,萝莉发觉有些开发者对iOS的应用符号表还不是很清楚,除了咨询关于符号表生成、配置的问题以外,对Bugly崩溃分析需要配置符号...

72850
来自专栏全栈之路

vue之滑块验证码

帮助文档:https://help.aliyun.com/document_detail/66318.html?spm=a2c4g.11186623.4.2.K...

2.2K50
来自专栏落影的专栏

iOS开发-IAP内购

介绍 分享下自己做内购遇到问题,总结出来的经验。 接入 使用RMStore。 1、使用RMStore的接入步骤 1、在Podfile内添加pod 'RMStor...

668100

扫码关注云+社区

领取腾讯云代金券