Swift - .plist文件数据的读取和存储
|
1
2
3
|
let array = NSArray(objects: "hangge.com","baidu.com","google.com","163.com","qq.com")let filePath:String = NSHomeDirectory() + "/Documents/webs.plist"array.writeToFile(filePath, atomically: true) |
进入目录打开webs.plist,可以看到生成的数据如下:

|
1
2
3
4
5
6
7
8
9
10
11
|
<?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> <string>hangge.com</string> <string>baidu.com</string> <string>google.com</string> <string>163.com</string> <string>qq.com</string></array></plist> |

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
import UIKitclass ViewController: UIViewController , UITableViewDelegate, UITableViewDataSource{ @IBOutlet weak var tableView: UITableView! var webs:NSArray? override func viewDidLoad() { super.viewDidLoad() webs = NSArray(contentsOfFile: NSHomeDirectory() + "/Documents/webs.plist") self.tableView!.delegate = self self.tableView!.dataSource = self //创建一个重用的单元格 self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell0") } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return webs!.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cell0", forIndexPath: indexPath) as UITableViewCell let url = webs![indexPath.row] as! String cell.textLabel?.text = url return cell } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
let myArray = [ [ ["name":"航歌", "url":"hangge.com"], ["name":"百度", "url":"baidu.com"], ["name":"google", "url":"google.com"] ], [ ["name":"163", "url":"163.com"], ["name":"QQ", "url":"qq.com"] ] ] //声明一个字典 let filePath:String = NSHomeDirectory() + "/Documents/webs.plist"NSArray(array: myArray).writeToFile(filePath, atomically: true)print(filePath) |
进入目录打开webs.plist,可以看到生成的数据如下:

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
<?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> <array> <dict> <key>name</key> <string>航歌</string> <key>url</key> <string>hangge.com</string> </dict> <dict> <key>name</key> <string>百度</string> <key>url</key> <string>baidu.com</string> </dict> <dict> <key>name</key> <string>google</string> <key>url</key> <string>google.com</string> </dict> </array> <array> <dict> <key>name</key> <string>163</string> <key>url</key> <string>163.com</string> </dict> <dict> <key>name</key> <string>QQ</string> <key>url</key> <string>qq.com</string> </dict> </array></array></plist> |
下面把webs.plist文件中数据读取出来,并在表格里分区显示

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
import UIKitclass ViewController: UIViewController , UITableViewDelegate, UITableViewDataSource{ @IBOutlet weak var tableView: UITableView! var webs:NSArray? override func viewDidLoad() { super.viewDidLoad() webs = NSArray(contentsOfFile: NSHomeDirectory() + "/Documents/webs.plist") self.tableView!.delegate = self self.tableView!.dataSource = self //创建一个重用的单元格 self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell0") } // UITableViewDataSource协议中的方法,该方法的返回值决定指定分区的头部 func tableView(tableView:UITableView, titleForHeaderInSection section:Int)->String? { return " "; } //在本例中,有2个分区 func numberOfSectionsInTableView(tableView: UITableView) -> Int { return webs!.count; } //每个分区的记录数 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { let data = self.webs?[section] return data!.count } //每个单元格创建和内容赋值 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "cell0") let data = self.webs?[indexPath.section] let url = data![indexPath.row]["url"] as! String let name = data![indexPath.row]["name"] as! String cell.textLabel?.text = name cell.detailTextLabel?.text = url return cell } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }} |
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_888.html
Swift - .plist文件数据的读取和存储的更多相关文章
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
CSV文件数据如何读取.导入.导出到新的CSV文件中以及CSV文件的创建 一.csv文件的创建 (1)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...
- C语言进行csv文件数据的读取
C语言进行csv文件数据的读取: #include <stdio.h> #include <string.h> #include <malloc.h> #inclu ...
- HDF 文件数据的读取
http://www.cams.cma.gov.cn/cams_973/cheres_docs/cheres_doc_sat.modis.1b.html一. HDF文件格式 1.概述 HDF 是美国国 ...
- Python之TensorFlow的数据的读取与存储-2
一.我们都知道Python由于GIL的原因导致多线程并不是真正意义上的多线程.但是TensorFlow在做多线程使用的时候是吧GIL锁放开了的.所以TensorFlow是真正意义上的多线程.这里我们主 ...
- 加载plist文件数据的方法
这个pilist文件最外面的是一个数组,数组中每一个item是一个字典,我们的目的就是为了取到每一个item字典中的内容数据 下面看代码举例 //加载数组 - (void)handleData { / ...
- linux使用shell 进行文件数据的读取与排序
题目 shell脚本语言编写一个从键盘输入10名学生(含自己)的姓名. 性别.学号和家庭住址,然后按照学号排序,并将排序后的结果在屏幕上按对齐 的方式打印输出的程序. 代码 读入数据 数据排序(这里用 ...
- ios本地文件内容读取,.json .plist 文件读写
ios本地文件内容读取,.json .plist 文件读写 本地文件.json .plist文件是较为常用的存储本地数据的文件,对这些文件的操作也是一种常用的基础. 本文同时提供初始化变量的比较标准的 ...
- 黑马程序员——读取Plist文件
-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ 读取Plist文件 一:新建一个plist文件,并将plist文件数据填入plist文件中,这里pli ...
- Pandas_数据读取与存储数据(全面但不精炼)
Pandas 读取和存储数据 目录 读取 csv数据 读取 txt数据 存储 csv 和 txt 文件 读取和存储 json数据 读取和存储 excel数据 一道练习题 参考 Numpy基础(全) P ...
随机推荐
- Null指针
C++ Null 指针 C++ 指针 C++ 指针 在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯.赋为 NULL 值的指针被称为空指针. NULL ...
- Python之美[从菜鸟到高手]--urlparse源码分析
urlparse是用来解析url格式的,url格式如下:protocol :// hostname[:port] / path / [;parameters][?query]#fragment,其中; ...
- (IOS)数据持久化
1.属性列表序列化 2.模型对象归档 3.嵌入式SQLite3 4.Core Data 5.应用程序设置 6.UIDocument管理文档存储 7.iCloud Demo界面: 1.属性列表序列化 即 ...
- 系统运维-hub, repeater, switch, router初览
repeater, hub, switch, router都是针对与osi的7层网络模型的不同层而产生的设备,逐一概览如下: repeater:中继器 是网络物理层的一种连接设备,工作在osi的物理层 ...
- Multiple markers at this line @Override的解决方法
Multiple markers at this line - implements java.awt.event.ActionListener.actionPerformed - The metho ...
- Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法
详细说明:Visual c++例子,可不使用常规的对话框资源模板的情况下,动态创建对话框的方法.该方法可以在运行时在内存中直接建立对话框资源,使用起来更为灵活.适用于多个开发项目共享有界面的公用程序模 ...
- Hdu 5050 Divided Land
题目要求就是做求两个二进制数的gcd,如果是用java的话,这题很简单.但也可以用C++做,只能先给自己留下这个坑了,还在研究c++的做法. import java.math.BigInteger; ...
- Courses(最大匹配)
Courses Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- IOS中Key-Value Coding (KVC)的使用具体解释
kvc.键值编码,是一个非正式的协议.它提供一种机制来间接訪问对象的属性. 直接訪问对象是通过调用訪问器的方法实现,而kvc不须要调用訪问器的设置和获取方法.能够直接訪问对象的属性. 以下介绍一下kv ...
- Linux 静态库与共享库的使用
申明: 正如题如示,本篇讲的是Linux下是静态库与共享库,而Window下的动态链接库详细情况可见这篇文章:windows动态链接库 DLL 浅析.虽然原理,思想差不多,但是细节却各有不同. 一.静 ...