0%

《Objective-C 编程》30.Property List

property list 文件可以由以下对象组成:

  • NSArray
  • NSDictionary
  • NSString
  • NSDate
  • NSData
  • NSNumber (整数、浮点数或布尔值)

读取或写入 property list 文件

示例:

// 创建一个包含多个 NSDictionary 对象的 NSArray 对象
NSMutableArray *stocks = [[NSMutableArray alloc] init];
NSMutableDictionary *stock;

stock = [NSMutableDictionary dictionary];
[stock setObject:@"AAPL" forKey:@"symbol"];
[stock setObject:[NSNumber numberWithInt:200] forKey:@"shares"];
[stocks addObject:stock];

stock = [NSMutableDictionary dictionary];
[stock setObject:@"GOOG" forKey:@"symbol"];
[stock setObject:[NSNumber numberWithInt:160] forKey:@"shares"];
[stocks addObject:stock];

// 写入 property list 文件
[stocks writeToFile:@"/tmp/stocks.plist" atomically:YES];

// 读取之前生成的 property list 文件
NSArray *stockList = [NSArray arrayWithContentsOfFile:@"/tmp/stocks.plist"];
for (NSDictionary *d in stockList) {
    NSLog(@"I have %@ shares of %@",
          [d objectForKey:@"shares"],[d objectForKey:@"symbol"]);
}

使用 Xcode 内置的专用编辑器查看:

image

在项目中使用 property list 文件

其实我们在项目中看到的 info.plist 配置文件就是一个 property list 文件。其次,还可以使用 property list 文件格式化一些数据源。

例如:要在首页设置 4 个 Button,每个 Button 都有标题、图片、索引标志。直接用代码的方式将它们分散设置在代码中当然是可以的。但是如果使用 property list 文件,我们可以把这些数据抽象提取出来格式化保存,一来代码中不同的属性被抽象提取,提高了复用性。二来,如果以后 Button 按钮标题需要修改,直接去 property list 文件中修改就可以了。

示例:

  • 创建 property list 文件:

image

  • 代码中读取 property list 文件:
- (NSArray *)rootArray {
    if (!_rootArray) {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"navigationButton" ofType:@"plist"];
        _rootArray = [NSArray arrayWithContentsOfFile:path];
    }
    return _rootArray;
}
// 读/写 property list 文件:
NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary];
mutableDict[@"key"] = @"value";
[mutableDict writeToFile:@"/some/path/file" atomically:YES];

NSMutableDictionary *anotherDict = [[NSMutableDictionary alloc] initWithContentsOfFile:@"/some/path/file"];

参考

  • IOS 编程教程(七):用属性列表 (Property List) 来完善你的程序

欢迎关注我的其它发布渠道