iOS 数据持久性存储-属性列表
iOS上常用四种数据存取方法有:
1.属性列表
2.对象归档
3.iOS的嵌入式关系数据库(SQLite3)
4.苹果公司提供持久性共聚Core Data
由于苹果公司的沙盒机制,每个应用程序都有自己的/Documents文件夹,各自的应用程序只能读写自己的/Documents目录内容
这里将对以上4个内容分开解释。
属性列表:
这里你可以新建一个项目Persistence来熟悉属性列表
1.放置4个UILabel和4个UITextField到界面上(小技巧:放好第一行label和textfield后,按住option键,往下拖拽,就可复制)

2.为每个UITextField在XXViewController.h里定义输出口IBoutlet
可以在窗口右上角打开助理编辑器,按住control键,依次从UITextField拖到Persistence.h里,如图

3.在XXViewController.h建立两个方法,一个用于返回数据文件完整路径名,一个用于在程序被调到后台时开始保存UITextField内容
XXViewController.h完整代码如下:
#import <UIKit/UIKit.h> @interface BSLViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *field1;
@property (weak, nonatomic) IBOutlet UITextField *field2;
@property (weak, nonatomic) IBOutlet UITextField *field3;
@property (weak, nonatomic) IBOutlet UITextField *field4; - (NSString *)dataFilePath;
- (void)applicationWillResignActive:(NSNotification *)notification;
@end
4.在XXViewController.m实现方法.
在#import下方定义一个宏文件名#define kFilename @"myData.plist"
在@implementation下方同步.h中声明的属性@synthesize field1,field2,field3,field4;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. NSString *filePath = [self dataFilePath];
//检查数据文件是否存在,如果存在就用此文件内容实例化数组
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
field1.text = [array objectAtIndex:];
field2.text = [array objectAtIndex:];
field3.text = [array objectAtIndex:];
field4.text = [array objectAtIndex:];
} //注册一个通知,程序进入后台立即执行applicationWillResignActive:方法
UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillResignActive:) name:UIApplicationWillResignActiveNotification object:app];
}
//用于返回数据文件完整路径名
- (NSString *)dataFilePath{
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//数组索引0处就是Documentd目录
NSString *documentsDirectory = [path objectAtIndex:];
return [documentsDirectory stringByAppendingPathComponent:kFilename];
}
//当用户不再与程序交互,调用此方法
- (void)applicationWillResignActive:(NSNotification *)notification{
NSMutableArray *mutableArray = [[NSMutableArray alloc] init];
[mutableArray addObject:field1.text];
[mutableArray addObject:field2.text];
[mutableArray addObject:field3.text];
[mutableArray addObject:field4.text];
//将内容写入到属性列表中
[mutableArray writeToFile:[self dataFilePath] atomically:YES];
}
iOS 数据持久性存储-属性列表的更多相关文章
- iOS 数据持久性存储-对象归档
对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径读取文件的内容(也称为解档,反序列化) 主要涉及两个类:NSKeyedArichiver.NSKey ...
- iOS数据持久化存储之属性列表
属性列表(plist) iOS提供了一种plist格式的文件(属性列表)用于存储轻量级的数据,属性列表是一种XML格式的文件,拓展名为plist.如果对象是NSString.NSDictionary. ...
- iOS开发备忘录:属性列表文件数据持久化
属性列表文件是一种XML文件,Foundation框架中的数组和字典等都可以于属性列表文件相互转换. NSArray类常用读写属性列表文件的方法: +arrayWithContentsOfFile:类 ...
- iOS数据持久化存储:归档
在平时的iOS开发中,我们经常用到的数据持久化存储方式大概主要有:NSUserDefaults(plist),文件,数据库,归档..前三种比较经常用到,第四种归档我个人感觉用的还是比较少的,恰恰因为用 ...
- 转载 -- iOS数据持久化存储
作者:@翁呀伟呀 授权本站转载 概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方 ...
- iphone开发中数据持久化之——属性列表序列化(一)
数据持久化是应用程序开发过程中的一个基本问题,对应用程序中的数据进行持久化存储,有多重不同的形式.本系列文章将介绍在iphone开发过程中数据持久化的三种主要形式,分别是属性列表序列号.对象归档化以及 ...
- IOS数据本地存储的四种方式--
注:借鉴于:http://blog.csdn.net/jianjianyuer/article/details/8556024 在IOS开发过程中,不管是做什么应用,都会碰到数据保存问题.将数据保存到 ...
- iOS数据持久化--用户属性
一.简介 NSUserDefaults类是一个单例类,每个程序只有一个 NSUserDefaults对象,可以用来存储用户的属性,比如自动登录时候的账号密码等小型的数据. 二.使用 1.NSUserD ...
- iOS数据持久化存储
本文中的代码托管在github上:https://github.com/WindyShade/DataSaveMethods 相对复杂的App仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每 ...
随机推荐
- HDU 5933 ArcSoft's Office Rearrangement 【模拟】(2016年中国大学生程序设计竞赛(杭州))
ArcSoft's Office Rearrangement Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- 利用腾讯企业邮箱开放API获取账户未读邮件数初探
公司一直使用腾讯提供的免费企业邮箱服务,今天用管理员帐户登录后发现,原来现在腾讯的企业邮箱也开放了部分API 你可以通过开放接口实现以下功能: 数据同步 数据同步可以帮助你同步部门成员信息,你还可以创 ...
- HTML---网页编程(2)
前言 接着前面的HTML-网络编程1)来学习吧~~~ 色彩的表示 在计算机显示器中,使用红(red).绿(green).蓝(blue)3种颜色来构成各种各样的颜色.颜色的种类有16,256及65536 ...
- 用cmd改计算机名.bat 无需重启电脑生效
echo offset /p cname=请输入计算机名: echo REGEDIT4 >reg.reg echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentContr ...
- sshd_config 配置文件
Ssh-server 服务端 sshd_concfig Port Protocol HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_hos ...
- 在Ubuntu中设置中文输入法
在Ubuntu中设置中文输入法 */--> pre { background-color: #2f4f4f;line-height: 1.6; FONT: 10.5pt Consola,&quo ...
- hdu 4280 最大流
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4280 #pragma comment(linker, "/STACK:1024000000, ...
- 安装rabbitmq集群
一.安装 erlang.rabbitmq 在10.0.0.45.10.0.0.57.10.0.0.58三个节点上安装,然后开启 RabbitMQ 监控插件 以下在root用户操作 1./etc/hos ...
- c#基础语言编程-Path和Directory
引言 在程序常会对文件操作,在对文件操作中需要对文件路径的进行定位,在.Net中针对寻找文件提供两个静态类以供调用,Path和Directory. Path类 来自命名空间SYstem.IO,Path ...
- Linux下安装 TestLink常见问题解决方法
Read/write permissions For security reason we suggest that directories tagged with [S] on following ...