转自:http://www.cnblogs.com/geraldzhang/archive/2011/08/24/2152121.html

Mac OS X 的Cocoa ,NeXTSTEP 和GNUstep 编程框架中, 属性列表(Property List)文件是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。

Plist文件通常用于储存用户设置,也可以用于存储捆绑的信息,该功能在旧式的Mac OS中是由资源分支提供的。

使用mac os 和Core Foundation中的property list接口我们可以在层式的对象和xml文件之间进行转换。我们可以把xml文件存储起来以后再把它以对象的形式读取出来。这里我们来具体讨论下property list和他们的表现形式,以及如何在编程过程中使用他们。

这里我想提到一下NSUserDefault,它其实也是以property list 的形式来存储的,但是它有限制,比如说NSColor和NSFont等类型式不能够直接存储的,我们必须要转换他们,要把他们转换成NSData类型来存储,我想在另一篇文章在详细说说这个问题。

废话不多说,我们开始吧。

在编程的过程中,我们可以在项目中建立plist来存储一些变量,具体的操作步骤File-new-Mac OS X-Resource-Property List。我们在项目中可以以xml形式或者source Code形式来编写。比如我们的plist原代码的形式象下面的xml一样。

  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>Name</key>
  6. <string>John Doe</string>
  7. <key>Phones</key>
  8. <array>
  9. <string>408-974-0000</string>
  10. <string>503-333-5555</string>
  11. </array>
  12. </dict>
  13. </plist>

接下来我们从plist中读取信息,这是在iPhone开发中的应用:

  1. //get the plist file from bundle
  2. NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"];
  3. // build the array from the plist
  4. NSMutableArray *anArray = [[NSMutableArray alloc]initWithContentOfFile:plistPath];

下面是写操作

  1. NSString *error;
  2. NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
  3. NSUserDomainMask, YES) objectAtIndex:0];
  4. NSString *plistPath = [rootPath stringByAppendingPathComponent:@"Data.plist"];
  5. NSDictionary *plistDict = [NSDictionary dictionaryWithObjects:
  6. [NSArray arrayWithObjects: personName, phoneNumbers, nil]
  7. forKeys:[NSArray arrayWithObjects: @"Name", @"Phones", nil]];
  8. NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict
  9. format:NSPropertyListXMLFormat_v1_0
  10. errorDescription:&error];
  11. if(plistData) {
  12. [plistData writeToFile:plistPath atomically:YES];
  13. }
  14. else {
  15. NSLog(error);
  16. [error release];
  17. }

主要的内容来自于:

http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/PropertyLists/QuickStartPlist/QuickStartPlist.html#//apple_ref/doc/uid/10000048i-CH4-SW5

最新文章

  1. ab 轻量的压测工具
  2. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
  3. WPF中实例化Com组件,调用组件的方法时报System.Windows.Forms.AxHost+InvalidActiveXStateException的异常
  4. 未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.ServiceModel.Activation.HttpModule”。
  5. 使用Alcatraz来管理Xcode插件
  6. Configuring My Site in SharePoint 2010
  7. js控制进度条到达100%跳转界面一
  8. NIS 服务器
  9. Linux设备驱动——内核定时器
  10. javascript 正则匹配手机号码
  11. ASP.NET管线与应用程序生命周期
  12. PYTHON单元测试
  13. 华为OJ之尼科彻斯定理
  14. Python开篇
  15. goroutine背后的系统知识
  16. crm 数据展示 和分页思想(一)
  17. 【Android】修改Android 模拟器IMSI
  18. Module build failed: Error: Cannot find module &#39;url-loader&#39; 的坑
  19. Django基础(二)
  20. Oracle 数据类型 与C#映射关系

热门文章

  1. iOS10跳转至设置页面
  2. [日常] 免费的文本比较工具Meld使用
  3. Java 种15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁等等…
  4. Html学习之七(CSS选择器的使用--基础选择器优先级问题)
  5. Jquery调用ajax,出现一直跳转到error问题
  6. Leetcode146-lru-cache
  7. luoguP2852 [USACO06DEC]Milk Patterns
  8. OpenStack I18N
  9. centos 启动一个tcp服务程序
  10. PHP自动加载-spl_autoload_register