iOS学习之 plist文件的读写

Wesley13
• 阅读 760

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

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

我们创建一个项目来学习plist文件的读写。

1、创建项目Plistdemo

项目创建之后可以找到项目对应的plist文件,打开如下图所示:

iOS学习之 plist文件的读写

在编辑器中显示类似与表格的形式,可以在plist上右键,用源码方式打开,就能看到plist文件的xml格式了。

2、创建plist文件。

按command +N快捷键创建,或者File —> New —> New File,选择Mac OS X下的Property List

iOS学习之 plist文件的读写

iOS学习之 plist文件的读写

创建plist文件名为plistdemo。

打开plistdemo文件,在空白出右键,右键选择Add row 添加数据,添加成功一条数据后,在这条数据上右键看到 value Type选择Dictionary。点加号添加这个Dictionary下的数据

iOS学习之 plist文件的读写

添加完key之后在后面添加Value的值,添加手机号和年龄

创建完成之后用source code查看到plist文件是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>jack</key>
    <dict>
        <key>phone_num</key>
        <string>13801111111</string>
        <key>age</key>
        <string>22</string>
    </dict>
    <key>tom</key>
    <dict>
        <key>phone_num</key>
        <string>13901111111</string>
        <key>age</key>
        <string>36</string>
    </dict>
</dict>
</plist>

3、读取plist文件的数据

现在文件创建成功了,如何读取呢,实现代码如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    //读取plist

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"plistdemo" ofType:@"plist"];
    NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    NSLog(@"%@", data);//直接打印数据。
}

打印出来的结果:

PlistDemo[6822:f803] {
    jack =     {
        age = 22;
        "phone_num" = 13801111111;
    };
    tom =     {
        age = 36;
        "phone_num" = 13901111111;
    };
}

这样就把数据读取出来了。

4、创建和写入plist文件

在开发过程中,有时候需要把程序的一些配置保存下来,或者游戏数据等等。 这时候需要写入Plist数据。

写入的plist文件会生成在对应程序的沙盒目录里。

接着上面读取plist数据的代码,加入了写入数据的代码,

- (void)viewDidLoad
{
    [super viewDidLoad];
    //读取plist

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"plistdemo" ofType:@"plist"];
    NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
    NSLog(@"%@", data);
    
    //添加一项内容
    [data setObject:@"add some content" forKey:@"c_key"];
    
    //获取应用程序沙盒的Documents目录
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *plistPath1 = [paths objectAtIndex:0];
    
    //得到完整的文件名
    NSString *filename=[plistPath1 stringByAppendingPathComponent:@"test.plist"];
   //输入写入
    [data writeToFile:filename atomically:YES];
    
    //那怎么证明我的数据写入了呢?读出来看看
    NSMutableDictionary *data1 = [[NSMutableDictionary alloc] initWithContentsOfFile:filename];
    NSLog(@"%@", data1);
    
    
    // Do any additional setup after loading the view, typically from a nib.
}

**
在获取到自己手工创建的plistdemo.plist数据后,在这些数据后面加了一项内容,证明输入写入了。**

怎么证明添加的内容写入了呢?下面是打印结果:

**iOS学习之 plist文件的读写
**

代码地址:https://github.com/schelling/YcDemo/tree/master/PlistDemo

著作权声明:本文由http://blog.csdn.net/totogo2010/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
IOS定位服务的应用
IOS定位服务的应用一、授权的申请与设置在IOS8之后,IOS的定位服务做了优化,若要使用定位服务,必须先获取用户的授权。首先需要在info.plist文件中添加一个键:NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription。其中NS
Wesley13 Wesley13
3年前
unity sharesdk 采坑
sharesdk ios下打包后点击分享无响应,解决方法:1.确认一下info.plist文件的URLSchemes是否正确 qqweixinweChat的appkey都要添加数字是16进制的2.导入SDK的时候从官方下载IOS版本的SDK而不是导入unitypackage里面自带的,3.打开后图标名字显示的是英
Stella981 Stella981
3年前
IOS数据存储之NSUserDefaults
概述数据存储是开发中必不可少的一个功能,我们可以通过Sqlite数据库手动创建数据库,定义数据表;可以使用IOS的数据框架CoreData,更方便的操作数据库;也可以直接读写文件系统;这里将介绍另外一种常用的方法:使用NSUserDefaults类,以字典形式保存数据,IOS会自动把字典中的键值对转换成对应的XML文件(也就是plist文件),这
Stella981 Stella981
3年前
IOS企业证书web安装
plist文件要放在https下随便找一个git的即可plist<?xmlversion"1.0"encoding"UTF8"?<!DOCTYPEplistPUBLIC"//Apple//DTDPLIST1.0//EN""http://www.apple.com/DTDs/PropertyList1.0
Easter79 Easter79
3年前
The application does not contain a valid bundle identifier.解决方法
博主是在删除某第三方库后报此错误①首先Targetinfo.plist文件中bundleidentifier是否正确!输入图片说明(https://static.oschina.net/uploads/img/201704/12141820_zuX1.png"在这里输入图片标题")②如果配置都正确清理Xcode缓存文件点击小箭头直接删
Wesley13 Wesley13
3年前
IOS学习笔记
读取plist:// 获取文件路径。NSString path  NSBundle mainBundle pathForResource:@"plistDemo" ofType:@"plist";// 读取文件  NSMutableDictionary data  NSMutableDiction
Stella981 Stella981
3年前
NSUserDefaults轻量级本地存储数据
NSUserDefaults适合存储轻量级的本地数据,比如要保存一个登陆界面的数据,用户名、密码之类的,个人觉得使用NSUserDefaults是首选。下次再登陆的时候就可以直接从NSUserDefaults里面读取上次登陆的信息咯。因为如果使用自己建立的plist文件什么的,还得自己显示创建文件,读取文件,很麻烦,而是用NSUserDefaults则不
子桓 子桓
1年前
最好用的Plist编辑器 PlistEdit Pro for Mac中文直装版
PlistEditPro是一款专为MacOS编写的最高级属性列表(Plist)编辑器。对于Mac和IOS开发人员来说,编写应用程序时必须编辑各种列表文件,PlistEditPro通过提供直观且功能强大的界面,使编辑这些文件变得更加容易。它不仅能够复制和粘贴
燕青 燕青
1年前
JSON编辑、擦卡工具:JSON Wizard for mac
是查看和编辑你的JSON最简单的方法,是Mac端的终极JSON工具。你只是想查看和编辑你的JSON文件?你想能够导入XML/YAML/PLIST/CSV文件吗?也许你想能够出口到所有这些格式?轻松的视觉编辑?或直接与源代码和生活语法检查?JSONWizar
融云IM即时通讯 融云IM即时通讯
10个月前
群聊中如何开启位置实时共享
如果需要在群聊中也加入该功能可在RCConfig.plist文件中添加如下内容:(注意:群聊最多支持5人同时位置共享。)实时位置共享功能技术文档链接:融云开发者文档2RealTimeLocationShareSupportConversationTypes