iOS 中 plist 文件的使用
2016-06-27 本文已影响4188人
angelen
我们在写 app 很多时候都可能需要用到一些类似与城市列表之类的数据,这些数据可以保存在 plist 文件里。
解释一下,plist 文件就是 Property List 文件,我们在 Xcode 中新建一个 Project 的时候,在 Project 中可以看到有一个 Info.plist 文件,这种以 .plist 后缀结尾的文件是以 key-value 键值对的形式保存数据的。在开发中,我们可以使用这些 plist 文件保存一些系统配置、用户信息等的信息,炒鸡方便。
你看这调皮的 Info.plist 文件这样吧,我搞一个 plist 文件,里面放有一些城市列表数据,然后把它读取出来。
开搞
新建一个 Property List 文件(以下简称 plist 文件),姑且起个名字 Cities.plist
选择 iOS -> Resource -> Property List
打开 Cities.plist 文件,发现它可以存储 Array(数组)和 Dictionary(字典)数据
Cities.plist 初体验
由于城市列表就是个数组,所以我们在 Root 这个 key 中的 Type 选择 Array,并往里面添加点城市数据
城市列表
添加完模拟数据,才发现添加的不是城市数据...算了,当作城市吧
其实 plist 文件本质就是一个 xml 文件
<?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">
<array>
<dict>
<key>cityID</key>
<integer>1</integer>
<key>cityName</key>
<string>北京</string>
<key>cityRemark</key>
<string>直辖市</string>
</dict>
<dict>
<key>cityID</key>
<integer>2</integer>
<key>cityName</key>
<string>天津</string>
<key>cityRemark</key>
<string>直辖市</string>
</dict>
<dict>
<key>cityID</key>
<integer>3</integer>
<key>cityName</key>
<string>河北</string>
<key>cityRemark</key>
<string>省</string>
</dict>
<dict>
<key>cityID</key>
<integer>4</integer>
<key>cityName</key>
<string>山西</string>
<key>cityRemark</key>
<string>省</string>
</dict>
<dict>
<key>cityID</key>
<integer>5</integer>
<key>cityName</key>
<string>内蒙古</string>
<key>cityRemark</key>
<string>自治区</string>
</dict>
<dict>
<key>cityID</key>
<integer>6</integer>
<key>cityName</key>
<string>辽宁</string>
<key>cityRemark</key>
<string>省</string>
</dict>
</array>
</plist>
读取 plist 文件
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) NSArray *cities;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSBundle *bundle = [NSBundle mainBundle];
NSString *filePath = [bundle pathForResource:@"Cities" ofType:@"plist"];
self.cities = [NSArray arrayWithContentsOfFile:filePath];
NSLog(@"城市列表-->%@", self.cities);
}
@end
控制台打印:
城市列表
这样拿到数据就可以对它进行一些处理了。
好吧,我只是经常要用到记录一下而已🌚