A. IOS 存储方式(PList、NSUserDefaults、归档、CoreData、数据库、文件)
iOS开发,plist文件读写那些事 - (jianshu.com)
NSUserDefaults存储轻量级 的本地数据 ,比如要保存一个登陆界面的数据,用户名、密码之类的。
支持的数据类型有 NSString、 NSNumber、NSInteger、NSFloat、BOOL、NSArray、NSDictionary、NSDate、 等系统定义的数据类型。
用NSUserDefaults存储的数据下次程序运行的时候依然存在 .它的数据存储在应用程序内置的一个plist文件里, 在/Library/Prefereces沙盒路径下.
NSUserDefaults是定时把缓存中的数据写入磁盘的,而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失,可以在写入数据后使用synchronize强制立即将数据写入磁盘:
使用NSKeyedArchiver 对数据进行 归档 反归档(将自定义类型转换为NSData类型:)
NSuserDefaults 的坑
iOS 最终,我还是决定放弃使用NSUserDefaults了 - (jianshu.io)
归档: ,就是将数据写到一个文件里面去。一般我们的应用的变量常量之类的数据都是在内存里面的,只要APP关闭,这些数据都会丢失。但是把数据存储到文件里面去,就能将数据保存到本地磁盘里面(目前iOS基本就是在沙盒里面操作了),不管是APP关闭还是重启设备,下次启动APP的时候都能够读出来。
解档: (别人也叫反归档),就是将数据从文件里面读取出来。在程序里面使用。
【iOS】数据持久化:使用NSKeyedArchiver进行数据归档 - (jianshu.com)
iOS 开发Core Data使用方法 – 技术狗 (jishudog.com)
IOS 开发文件操作——NSFileManager - 星语海蓝 - 博客园 (cnblogs.com)
(15条消息) iOS文件操作_你有故事,我囿酒-CSDN博客
参考:
iOS开发 - 关于 NSUserDefaults 的使用 - (jianshu.com)
B. iOS 中 plist 文件的使用
解释一下,plist 文件就是 Property List 文件,我们在 Xcode 中新建一个 Project 的时候,在 Project 中可以看到有一个 Info.plist 文件,这种以 .plist 后缀结尾的文件是以 key-value 键值对的形式保存数据的。在开发中,我们可以使用这些 plist 文件保存一些系统配置、用户信息等的信息,炒鸡方便。
这样吧,我搞一个 plist 文件,里面放有一些城市列表数据,然后把它读取出来。
新建一个 Property List 文件(以下简称 plist 文件),姑且起个名字 Cities.plist
打开 Cities.plist 文件,发现它可以存储 Array(数组)和 Dictionary(字典)数据
由于城市列表就是个数组,所以我们在 Root 这个 key 中的 Type 选择 Array,并往里面添加点城市数据
添加完模拟数据,才发现添加的不是城市数据...算了,当作城市吧
其实 plist 文件本质就是一个 xml 文件
控制台打印:
这样拿到数据就可以对它进行一些处理了。
好吧,我只是经常要用到记录一下而已🌚
C. 用触动怎么读取plist的数组
.plist文件里面放的可能是数组也可能是字典,我们如果直接用NSLog方法打印数组,字典的时候,我们会得到的就是这样的编码格式的内容,这显然是不能用在android的,所以我们的思路是要将.plist中的内容打印为我们能处理的内容,那就是JsonString了。所以iOS这边的做法,如图片所示,先将plist文件放入,然后读取出内部的数组信息,然后用SBJson转化为NSString,然后在NSLog打印出来,运行程序我们会得到
D. iOS开发,plist文件读写操作
这里有一点需要注意:
命名的时候不能用Info.plist , INfo.plist, xxxInfo.plist等形式,否则会与系统中存在的Info.plist文件发生冲突。
点击Root这一行,然后通过点击右键->Add Row或者点击Root后面的加号来增加一行。
这一行中包含三个属性,key、type、value。其中key是字段属性,type是字段类型,value是字段对应的值。
Type包含7中类型,对写入的数据结构应属于7仲:
(NSString,NSData,NSDate,NSNumber,NSArray,NSDictionary)
读取数据
文件是什么类型,就用什么类型的数据来接收
参考文档1: iOS开发,plist文件读写那些事
参考文档2: iOS开发中怎么创建Plist文件
参考文档3: 【iOS】plist无法写入的原因
参考文档4: plist 文件写入与读取
E. 请问如何读入数据,plist文件(用记事本即可打开)
plist文件用记事本打开方法如下:
1.
打开系统记事本程序:
2.
输入System.Diagnostics.Process.Start("notepad.exe")
3.
用记事本程序打开一个txt文件:
例如在D盘的【abc.txt】文件,传入文件的路径参数即可,如下:
System.Diagnostics.Process.Start("notepad.exe",
"D:\\a.txt");
F. ios 怎么从 plist读取应用名字
在IOS中,读取系统产生的文件和用户自定义的plist文件写法是不一样的,系统产生的plist文件和用户自定义的plist文件的代码定法是不一样。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//读取自定义的 plist文件的写法
// NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"customInfo" ofType:@"plist"];
// NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
// NSLog(@"dictionary = %@",dictionary);
//将学生信息填入
// NSDictionary *tmpInfo = [dictionary objectForKey:@"Student"];
// self.txtStuName.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Name"]];
// self.txtStuSex.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Sex"]];
// self.txtStuNum.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Num"]];
//将导师信息填入
// tmpInfo = [dictionary objectForKey:@"Mentor"];
// self.txtMtName.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Name"]];
// self.txtMtSex.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Sex"]];
//读取系统产生的 plist文件的写法
NSDictionary *plistDic = [[NSBundle mainBundle] infoDictionary];
NSLog(@"plistDic = %@",plistDic);
//将学生信息填入
NSDictionary *tmpInfo = [plistDic objectForKey:@"Student"];
self.txtStuName.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Name"]];
self.txtStuSex.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Sex"]];
self.txtStuNum.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Num"]];
//将导师信息填入
tmpInfo = [plistDic objectForKey:@"Mentor"];
self.txtMtName.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Name"]];
self.txtMtSex.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey:@"Sex"]];
}
G. ios开发怎么读取plist文件
首先要知道读取plist文件的方法,一般来说,使用代码
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"listFileName" ofType:@"plist"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath];
NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
已经足够了,此时可以使用NSLog例程查看array和dictionary的内容。不过,有时候受plist文件内容的限制,array内容可能为空。
其实,用dictionary就已经足够了,在下面的例子里我们也只用dictionary。
1、运行Xcode4.2,新建一个Single View Application,名称为ReadPlistFile,其他设置如下图:
2、新建我们自己的plist文件:
File —> New —> New File,选择Mac OS X下的Property List
文件名为 customInfo,Group选择Supporting Files。
3、单击新建的customInfo.plist,我们添加数据,如下图:
注意,Type一项的类型,选择的是Dictionary,以Source Code打开,显示如下:
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>Student</key>
<dict>
<key>Name</key>
<string>Yang</string>
<key>Sex</key>
<string>Male</string>
<key>Num</key>
<string>SX_010</string>
</dict>
<key>Mentor</key>
<dict>
<key>Name</key>
<string>Gu</string>
<key>Sex</key>
<string>Male</string>
</dict>
</dict>
</plist>
4、为视图添加控件:
单击BIDViewController.xib,打开IB,拖几个控件上去,并设置好布局,如下图:
上图中所有的控件都是Label,并设置了字体大小。
5、接下来就是映射呗,把五个灰色的Label都映射到BIDViewController.h文件中,类型都是OutLet,名称依次是stuName,stuSex,stuNum,mtName,mtSex。
6、单击BIDViewController.m,在viewDidLoad方法中的[super viewDidLoad]之后添加如下代码:
//首先读取studentInfo.plist中的数据
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"customInfo" ofType:@"plist"];
NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
//将学生信息填入视图
NSDictionary *tmpInfo = [dictionary objectForKey: @"Student"];
self.stuName.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey: @"Name"]];
self.stuSex.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey: @"Sex"]];
self.stuNum.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey: @"Num"]];
//将导师信息写入视图
tmpInfo = [dictionary objectForKey: @"Mentor"];
self.mtName.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey: @"Name"]];
self.mtSex.text = [NSString stringWithFormat:@"%@", [tmpInfo objectForKey: @"Sex"]];
7、运行,查看效果: