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仅靠内存的数据肯定无法满足,数据写磁盘作持久化存储是几乎每 ...
随机推荐
- oracle数据库根据不同条件给同一字段修改相应的值:
oracle数据库根据不同条件给同一字段修改相应的值: 例如:根据职务调整雇员的工资,如果职务为“SALESMAN”或者“ANALYST”工资上调100元,如果职务为“MANAGER”工资上调200元 ...
- [SSD大法好]神舟K480-I5-D3鸟枪换炮M6S
Hello,SSD 期盼已久,终于入手了M6S的256G固态硬盘,白天就不安生一直百度.谷歌.必应,势必要把所有相关消息查个清楚这神舟K480I5D3怎生拆呢. 最后心里隐约有了安装的法门. 但到得开 ...
- 西安Uber优步司机奖励政策(1月25日~1月31日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 353. Design Snake Game
贪食蛇. GAME OVER有2种情况,1是咬到自己,2是出界. 1)用QUEUE来保留占据的格子,每走一格就添加1个,然后POll()最后一个. 做一个一样的SET来check要走的格子是不是已经在 ...
- “发送至Onenote”惹来的小麻烦(转)
原文来自 : http://blog.csdn.net/yiyu_0417/article/details/7864172 [看到这篇文章,我觉得以后我也会遇到这个问题,很有价值我就先拷贝了,留着以 ...
- VS2012的安装项目只能用InstallShield Limited Edition[附资源下载]
以前版本的Visual Stuido中安装项目都可以使用微软自家的Visual Studio Installer,但是到了VS2012这一切都变了,只能用InstallShield Limited E ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(22)-权限管理系统-模块导航制作
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(22)-权限管理系统-模块导航制作 最近比较忙,系统难度独步增加,文章的发布速度明显比以前慢了. 由于我们 ...
- java中经常使用的日期格式化(全)
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...
- php判断http头还是https头
$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HT ...
- linux下mysql配置文件my.cnf详解
basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = path 从给定目录读取数据库文件 ...