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中工作-但我无法找到如何设置这 ...
随机推荐
- ORACLE更新数据时如果有就更新没有就插入
SQL写法: begin update table_name set salary = 10000 where emp_id = 5; if sql%notfound then insert into ...
- U-boot中SPL功能和源码流程分析
在U-boot目录下,有个比较重要的目录就是SPL的,SPL到底是什么呢?为什么要用它呢? SPL(Secondary programloader)是uboot第一阶段执行的代码.主要负责搬移uboo ...
- Caffe 使用记录(五):math_functions 分析
本文转载自 Caffe源码(一):math_functions 分析 math_function 定义了caffe 中用到的一些矩阵操作和数值计算的一些函数,这里以float类型为例做简单的分析 1. ...
- vue项目打包上线时的配置操作
vue的图片路径,和背景图片路径打包后错误解决 2017-12-11 16:00 by muamaker, 7037 阅读, 0 评论, 收藏, 编辑 最近在研究vue,老实的按照官网提供的,搭建的了 ...
- 选择排序——Selection Sort
基本思想: 在长度为N的无序数组中,第一次遍历n-1个数,找到最小的数值与第一个元素交换:第二次遍历n-2个数,找到最小的数值与第二个元素交换:...第n-1次遍历,找到最小的数值与第n-1个元素交换 ...
- Android Studio中设置一个按钮的不同点击触发事件
my_day_model = (RelativeLayout) v.findViewById(R.id.my_day_model);my_day_pic = (ImageView) v.findVie ...
- Android并发编程 多线程与锁
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,如果能给各位看官带来一丝启发或者帮助,那真是极好的. 前言 前一篇Android并发编程开篇呢,主要是简单介绍一下线程以及 ...
- 从零开始学 Web 之 DOM(一)DOM的概念,对标签操作
大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...
- Hadoop-调优剖析
1.概述 其实,在从事过调优相关的工作后,会发现其实调优是一项较为复杂的工作.而对于Hadoop这样复杂且庞大的系统来说,调优更是一项巨大的工作,由于Hadoop包含Common.HDFS.MapRe ...
- nginx介绍(五) - 高可用
前言 即便想 nginx 这么牛B的服务器, 也不能保证他不挂啊, 就算不是机器出故障, 比如, 停电了, 那么机器挂了, 很正常啊. 这时候, 没有分发服务器, 网站就不能正常访问了, 咋搞? 网站 ...