iOS数据存取和对象序列化
一. 使用NSKeyedArchiver类操作对象的存取
特点:该类可以将对象以键值对的形式存入文件,并通过key从文件中取出,与android中的SharedPreference用法类似,而且它序列化后的数据是加密的
1. 将数据存入文件:
- NSString *rootDir = NSHomeDirectory();
- NSString *path = [rootDir stringByAppendingPathComponent:@"test.txt"];
- NSMutableData *data = [NSMutable data];
- NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingMutableData:data];
- NSArray *array = @[@"one",@"two"];
- [archiver encodeInt:100 forKey:@"age"];//相当于SharedPreference的putInteger(key,value);
- [archiver encodeObject:array forKey:@"names"];//
- [archiver finishEncoding];//此方法调用,则将数据存入data
- [archiver release];
- if([data writeToFile:path atomically:YES]){
- NSLog(@"对象存入文件成功");
- }
2. 将数据从文件中取出
- NSData *data = [NSData dataWithContentOfFile:path];
- NSKeyedArchiver *unarchiver =[[NSKeyedArchiver alloc] initForReadingWithData:data];
- int age = [unarchiver decodeIntForKey:@"age"];//取出值
- NSArray *array = [unarchiver decodeObjectForKey:@"names"];
- [archiver release];
二. 使用NSUserDefaults类操作对象的存取
特点:该类将对象以键值对的形式存入系统固定的plist缓存文件,并通过key从文件中取出,与android中的SharedPreference应用场景一样,用于缓存小型简单的缓存数据
- //1. 存入数据
- NSArray *array = @[@"abc",@"d"];
- NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
- [userDefault setInteger:123 forKey:@"number"];
- [userDefault setObject:array forKey:@"array"];
- [userDefault synchronize];//存入文件
- //2. 取出数据
- NSInteger number = [userDefault integerForKey:@"number"];
- NSArray *array = [userDefault objectForKey:@"array"];
iOS数据存取和对象序列化的更多相关文章
- iOS数据存储之对象归档
iOS数据存储之对象归档 对象归档 对象归档是iOS中数据持久化的一种方式. 归档是指另一种形式的序列化,但它是任何对象都可以实现的更常规的类型.使用对模型对象进行归档的技术可以轻松将复杂的对象写入文 ...
- iOS数据存取---iOS-Apple苹果官方文档翻译
CHENYILONG Blog iOS数据存取---iOS-Apple苹果官方文档翻译 数据存取/*技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http:// ...
- iOS 数据持久性存储-对象归档
对象归档是将对象归档以文件的形式保存到磁盘中(也称为序列化,持久化),使用的时候读取该文件的保存路径读取文件的内容(也称为解档,反序列化) 主要涉及两个类:NSKeyedArichiver.NSKey ...
- iOS开发系列--数据存取
概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...
- 【转】iOS开发系列--数据存取
原文: http://www.cnblogs.com/kenshincui/p/4077833.html#SQLite 概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储 ...
- mybatis存取blob对象+@Cacheable实现数据缓存
参考文档: http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ 需求场景: 当前业务通过第三方接口查询一个业务数据, ...
- Activity之间传递数据或数据包Bundle,传递对象,对象序列化,对象实现Parcelable接口
package com.gaojinhua.android.activitymsg; import android.content.Intent; import android.os.Bundle; ...
- Statement和PreparedStatement的特点 MySQL数据库分页 存取大对象 批处理 获取数据库主键值
1 Statement和PreparedStatement的特点 a)对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录 b)对于创建和 ...
- Go Web:数据存储(3)——gob对象序列化
序列化持久存储gob 1.内存存储 2.CSV文件存储 3.gob序列化存储 本篇文章仍然接前面的文章:内存存储,主要介绍将博客文章数据序列化持久到文件中. encoding/gob包用于编码器和解码 ...
随机推荐
- Perl 语法 - 高级特性
总结: q().qq().qw(同单引号).qx{牢记是花括号},分别是单引号.双引号.创建字符串列表 和 捕获命令输出. 第9学时 其他函数和运算符 一件事情可以使用多种方法完成. 有哪些其他的 ...
- 测试耗电量的工具(Android)
Emmagee是监控指定被测应用在使用过程中占用机器的CPU.内存.流量资源的性能测试小工具. 支持SDK:Android2.2以及以上版本 Emmagee功能介绍 1.检测当前时间被测应用占用的CP ...
- Unity5中叹为观止的实时GI效果
http://www.manew.com/thread-43970-1-1.html 今天为大家分享unity与Alex Lovett共同使用unity5制作的Shrine Arch-viz Demo ...
- 创建和使用Windows静态链接库
首先明确这篇文章的目的,我希望大家能够通过这篇文章了解一下如何在实际工作中创建和使用Windows平台下的静态链接库.关于链接库的概念,希望大家参考维基百科"Library"词条( ...
- 在VBA中调用工作表函数
虽然VBA几乎可以完成所有工作表函数的功能,但是有时候在无法打开思路的时候,适当调用一些工作表函数也未尝不可,在VBA中调用工作表函数需要用到 WorksheetFunction对象,例如: Work ...
- HTML5自学笔记[ 11 ]canvas绘图基础1
html5新增<canvas>标签用于绘制图像,默认宽高是300*150,canvas的宽高需要在这里设置,在css中设置会有问题:设置的形状,如矩形,会等比缩放,而非设置的宽高. 在不支 ...
- kwicks插件学习
/* Kwicks for jQuery (version 1.5.1) Copyright (c) 2008 Jeremy Martin http://www.jeremymartin.name/p ...
- Visual Studio中的快捷键
我们在使用Visual Studio的时候,如用一些快捷键,就能减少我们键盘和鼠标来回切换的次数,从而提高我们编码的速度,在此跟大家分享一些经常Visual Studio中用到的快捷键 自动缩进:选中 ...
- webService—调用webService
Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...
- MATLAB画图
画图代码 clear % http://www.peteryu.ca/tutorials/matlab/visualize_decision_boundaries % load RankData % ...