iOS开发-本地存储(偏好设置,Plist,归档)
1. NSUserDefaults
//TODO: 1.NSUserDefaults NSUserDefaults类除了可以存储数组、字典、NSdata外,还可以直接存储OC基本类型属性。但是不能直接作用到自定义对象.
[[NSUserDefaults standardUserDefaults] setObject:@"" forKey:@""];//设置初始值
[[NSUserDefaults standardUserDefaults] synchronize];//进行同步 [[NSUserDefaults standardUserDefaults] objectForKey:@""];//取值
2. Plist
//TODO: 2.Plist文件
//1.根据已有plist文件取值
NSString *pathString = [[NSBundle mainBundle] pathForResource:@"Property List" ofType:@"plist"];
//如果plist文件是一个NSArray,用数组取
NSArray *array = [NSArray arrayWithContentsOfFile:pathString];
//如果plist文件是一个NSDictionary,用字典取
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:pathString];
//2.创建plist文件
NSArray *homeDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentString = homeDirectory[];
NSString *documentPath = [documentString stringByAppendingPathComponent:@"GCD.plist"];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager createFileAtPath:documentPath contents:nil attributes:nil]; NSArray *fileArray = @[@{@"name":@"one"},@{@"name":@"two"}];
[fileArray writeToFile:documentPath atomically:YES];//写入数据 NSArray *readArray = [NSArray arrayWithContentsOfFile:documentPath];//读取数据
3. 归档、解档
//TODO: 3.归档/解档
archiveModel *model = [[archiveModel alloc]init];
model.name = @"小明";
model.age = @"";
model.sex = @"男"; NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [pathArray[] stringByAppendingPathComponent:@"model"]; /*
一.只归档一个对象 [NSKeyedArchiver archiveRootObject:model toFile:filePath];
*/ /*
一.只解档一个对象
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
//路径存在
archiveModel *readModel = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
NSLog(@"解档:%@",readModel);
}
*/ //二.归档多个对象
NSMutableData *data = [[NSMutableData alloc]init];
NSKeyedArchiver *keyedArchiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];
[keyedArchiver encodeObject:model forKey:@"model"];
//[keyedArchiver encodeObject:model forKey:@"key1"];
//[keyedArchiver encodeObject:model forKey:@"key2"];
[keyedArchiver finishEncoding]; if ([data writeToFile:filePath atomically:YES]) {
NSLog(@"归档成功");
} //二.解档多个对象
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSKeyedUnarchiver *keyedUnarchive = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];
archiveModel *readModel = [keyedUnarchive decodeObjectForKey:@"model"];
//archiveModel *readModel = [keyedUnarchive decodeObjectForKey:@"key1"];
//archiveModel *readModel = [keyedUnarchive decodeObjectForKey:@"key2"];
[keyedUnarchive finishDecoding]; }
iOS开发-本地存储(偏好设置,Plist,归档)的更多相关文章
- iOS:沙盒、偏好设置、归档、解归档
		
一.沙盒和应用程序包 •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle –Documents –Library/Ca ...
 - IOS开发数据存储篇—IOS中的几种数据存储方式
		
IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09 421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都 ...
 - iOS 图片本地存储、本地获取、本地删除
		
在iOS开发中.经常用到图片的本地化. iOS 图片本地存储.本地获取.本地删除,可以通过以下类方法实现. p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: ...
 - (转)iOS开发之同一应用设置不同图标和名称
		
本文转自:http://www.devzeng.com/blog/ios-two-version-app-setting-profile.html iOS开发之同一应用设置不同图标和名称 SEP 6T ...
 - IOS第13天(2,私人通讯录,plist存储,偏好设置,归档)
		
***************plist存储 // 当点点击保存的时候调用 //保存 - (IBAction)save:(id)sender { // 获取沙盒的根路径 // NSString *ho ...
 - 持久化存储——偏好设置,plist,归档---学习笔记二
		
//一. 本地持久化 //1.沙盒 //1.1 应用程序包:存放的是应用程序的源文件,包括资源文件和可执行文件 NSString *path = [[NSBundle mainBundle]bundl ...
 - iOS学习笔记15-序列化、偏好设置和归档
		
一.本地持久化 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件( ...
 - iOS学习之应用偏好设置
		
如今,即便是最简单的计算机程序也会包含一个偏好设置窗口,用户可以在其中设置应用专属的选项.在MAC OS X中,Preferences...菜单通常位于应用菜单中.选择该菜单项会弹出一个窗口,用户可以 ...
 - objective-c ios webkit 本地存储local-storage
		
我有一个Cocoa / Objective-C的应用程序,它嵌入了一个WebKit的web视图.我需要打开的数据库支持和本地存储.我知道这是可以做到-我有它在Safari中工作-但我无法找到如何设置这 ...
 
随机推荐
- 天了噜,Java 8 要停止维护了!
			
前些天的中兴事件,已经让国人意识到自己核心技术的不足,这次的 JDK 8 对企业停止免费更新更是雪上加霜.. 以下是 Oracle 官网提示的 JDK8 终止更新公告. 原文内容:Oracle wil ...
 - python语法基础-初始化/继承
			
写了一些程序,基本上都是直接def函数 然后在main方法中 调用 但是在一些应用程序中 会有基本语法的使用(初始化,继承) 初始化: 1.在程序执行时一定执行一次的操作 2.python中初始化in ...
 - 第八章:四大组件之Content Provider
			
前言 Content Provider——Android四大组件之一. 本文要点 1.Content Provider简介 2.URI简介 3.如何访问Content Provider中数据 一.Co ...
 - mysql 开发进阶篇系列 25 数据库RPM安装目录介绍
			
一.概述 mysql可以在多个平台上运行,在windows平台上安装有noinstall包和图形化包二种方式.在linux/unix平台上有RPM包安装,二进制包(Binary Package)安装, ...
 - Android_学习系列(33)--App应用之提交到各大市场渠道
			
本文同步更新在http://hmu140482.chinaw3.com/?p=315. Android的终端碎片化问题,是一个很讨厌的问题. 而对于国内开发者来说,Android的市场“碎 ...
 - MongoDB 常用的几大GUI工具
			
MongoDB 常用的几大GUI工具 MongoDBCompass (官方的连接工具),免费的,界面简洁,不支持 sql 查询,支持性能监控.支持在三大平台 Windows .Mac .Linux 上 ...
 - easyui combobox下拉列表的多选值
			
html: <input id="cc" class="easyui-combobox" value="" data-options= ...
 - Maven_3 如何从Maven远程存储库下载
			
如果在你的项目中,需要使用到的jar包. 如果使用build path的话,你把你的项目给别人运行的时候,别人还需要去build path,如果要换jar包的版本,这些都是比较麻烦的,所以我们使用ma ...
 - javascript变量提升详解
			
js变量提升 对于大多数js开发者来说,变量提升可以说是一个非常常见的问题,但是可能很多人对其不是特别的了解.所以在此,我想来讲一讲. 先从一个简单的例子来入门: a = 2; var a; cons ...
 - Struts2学习(一)————Struts2入门
			
首先推荐一本书,虽然我还没看过,但是我以后肯定会看的,<Struts+技术内幕>提取密码:kg6w .现在只是停留在会使用struts2的层次,自己也想继续深入研究,但是感觉自己的知识面还 ...