原帖:http://blog.csdn.net/totogo2010/article/details/7634185

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

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

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

1、创建项目Plistdemo

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

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

2、创建plist文件。

 

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

创建plist文件名为plistdemo。

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

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

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>jack</key>
  6. <dict>
  7. <key>phone_num</key>
  8. <string>13801111111</string>
  9. <key>age</key>
  10. <string>22</string>
  11. </dict>
  12. <key>tom</key>
  13. <dict>
  14. <key>phone_num</key>
  15. <string>13901111111</string>
  16. <key>age</key>
  17. <string>36</string>
  18. </dict>
  19. </dict>
  20. </plist>

3、读取plist文件的数据

 

现在文件创建成功了,如何读取呢,实现代码如下:
  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. //读取plist
  5. NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"plistdemo" ofType:@"plist"];
  6. NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
  7. NSLog(@"%@", data);//直接打印数据。
  8. }
打印出来的结果:
  1. PlistDemo[6822:f803] {
  2. jack =     {
  3. age = 22;
  4. "phone_num" = 13801111111;
  5. };
  6. tom =     {
  7. age = 36;
  8. "phone_num" = 13901111111;
  9. };
  10. }

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

 

4、创建和写入plist文件

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

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

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

  1. <strong>- (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. //读取plist
  5. NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"plistdemo" ofType:@"plist"];
  6. NSMutableDictionary *data = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
  7. NSLog(@"%@", data);
  8. //添加一项内容
  9. [data setObject:@"add some content" forKey:@"c_key"];
  10. //获取应用程序沙盒的Documents目录
  11. NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
  12. NSString *plistPath1 = [paths objectAtIndex:0];
  13. //得到完整的文件名
  14. NSString *filename=[plistPath1 stringByAppendingPathComponent:@"test.plist"];
  15. //输入写入
  16. [data writeToFile:filename atomically:YES];
  17. //那怎么证明我的数据写入了呢?读出来看看
  18. NSMutableDictionary *data1 = [[NSMutableDictionary alloc] initWithContentsOfFile:filename];
  19. NSLog(@"%@", data1);
  20. // Do any additional setup after loading the view, typically from a nib.
  21. }
  22. </strong>


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

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


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

iOS plist文件的读写的更多相关文章

  1. (转)iOS学习之 plist文件的读写

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

  2. iOS学习之 plist文件的读写

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

  3. iOS Plist 文件的 增 删 改

    一:Plist 文件的创建 Plist 文件作为我们IOS开发的一种数据存储文件,还是经常会用到的.在看<X-code江湖录>的时候,看到了这一点.自己就写了一下,把写的东西分享出来!先看 ...

  4. iOS,plist文件、pct文件,工程设置

    1.使用pch文件 2.在info.plist中配置URL Schemes 3.plist配置拍照界面,复制,粘贴等菜单的显示语言 显示中文 4.使用非ARC库/ARC库 5.链接选项-Objc &a ...

  5. iOS Plist文件,增删改查

    今天早上,9点开始弄Plist,然后一直写,一直写(中午取出40分钟吃饭时间),写到1点,写完了,交给头,头说,不是这个意思.我是每个用户创建了一个文件夹,在这个用户的文件夹里面,分别根据应用创建了文 ...

  6. IOS plist文件

    转自:http://www.cnblogs.com/geraldzhang/archive/2011/08/24/2152121.html 在Mac OS X 的Cocoa ,NeXTSTEP 和GN ...

  7. plist文件的读写

    参考资料 http://blog.csdn.net/totogo2010/article/details/7634185

  8. plist文件Boolean类型读写方法

    http://blog.csdn.net/a6472953/article/details/7659505   转 1.读取plist文件中的Boolean类型的字段值时,要先把它转为NSNumber ...

  9. Plist文件介绍

    开发IOS遇到数据,这里专门做frame sprite数据说明 plist plist是property list的缩写.plist中包括一些命名值和使用Core  Foundation类型创建的值的 ...

随机推荐

  1. 解决Floodlight界面无法显示问题

    参考: 解决Floodlight1.2+Mininet问题及使用安装 解决Floodlight界面无法显示问题 执行以下命令启动Floodlight时: java -jar target/floodl ...

  2. 重拾IP路由选择:CCNA学习指南中的IP路由选择

    IP路由选择技术 是网络技术的核心部分,也是目前研究的热点,其中的 动态路由选择协议 比如RIPv1,RIPv2,OSPF等,解决了数据在网络中转递的诸多问题. 在TCP/IP协议详解的学习过程中,我 ...

  3. 【转载】TCP慢启动、拥塞避免、快速重传、快速回复

    转载自:TCP慢启动.拥塞避免.快速重传.快速回复 转自:http://blog.csdn.net/itmacar/article/details/12278769 感谢博主的辛勤成果! 为了防止网络 ...

  4. 【Coursera】SecondWeek(1)

    全球互联网的始祖 APRANET APRANET 是 DARPA(美国国防部高级研究计划局) 开发的世界上第一个运营PacketSwitching(分包交换)的网络. 鉴于二战后世界格局两极化的历史背 ...

  5. poj 1144 Network 无向图求割点

    Network Description A Telephone Line Company (TLC) is establishing a new telephone cable network. Th ...

  6. Codeforces D - Ithea Plays With Chtholly

    D - Ithea Plays With Chtholly 思路:考虑每个位置最多被替换c/2次 那么折半考虑,如果小于c/2,从左往右替换,大于c/2总右往左替换,只有小于这个数(从左往右)或者大于 ...

  7. js 基础数据类型和引用类型 ,深浅拷贝问题,以及内存分配问题

    js 深浅拷贝问题 浅拷贝一般指的是基本类型的复制 深拷贝一般指引用类型的拷贝,把引用类型的值也拷贝出来 举例 h5的sessionStorage只能存放字符串,所以要存储json时就要把json使用 ...

  8. 精伦盒子H1,插上USB,找不到对应的文件路径

    看USB的灯闪的挺正常的, 但就是不知道,该怎么mount 上去. 查了UDEV的资料, 发觉这个盒子虽然没有 udevmonitor命令, 却可以用  udevadm monitor 来监视udev ...

  9. Ubuntu 18.04 LTS 安装wine 、exe程序安装和卸载

    什么是wine?Wine(是“Wine Is Not an Emulator”的缩写)是一个兼容层,能够在几个POSIX兼容的操作系统上运行Windows应用程序,如Linux.MaOS.BSD.代替 ...

  10. 『Scrapy』爬取斗鱼主播头像

    分析目标 爬取的是斗鱼主播头像,示范使用的URL似乎是个移动接口(下文有提到),理由是网页主页属于动态页面,爬取难度陡升,当然爬取斗鱼主播头像这么恶趣味的事也不是我的兴趣...... 目标URL如下, ...