如果持久话自定义对象 那么这个对象一定要遵循 NSCoding 协议 并实现编解码;然后再将编解码后的数据 NSKeyedArchiver 到NSData中

 

@interface NSKeyAndValue : NSObject <NSCoding> // 键值对象

@property (nonatomic, retain) NSString* m_strKey;

@property (nonatomic, retain) NSString* m_strValue;

@property (nonatomic, retain) NSString* m_strID;

@end

@implementation NSKeyAndValue

@synthesize m_strKey,m_strValue, m_strID;

- (void)encodeWithCoder:(NSCoder *)aCoder{

[aCoder encodeObject:self.m_strKey forKey:@"m_strKey"];

[aCoder encodeObject:self.m_strValue forKey:@"m_strValue"];

[aCoder encodeObject:self.m_strID forKey:@"m_strID"];

}

- (id)initWithCoder:(NSCoder *)aDecoder{

self = [super init];

if (self) {

self.m_strKey = [aDecoder decodeObjectForKey:@"m_strKey"];

self.m_strValue = [aDecoder decodeObjectForKey:@"m_strValue"];

self.m_strID = [aDecoder decodeObjectForKey:@"m_strID"];

}

return self;

}

 
读取和保存自定义对象方式如下:

- (void)readMsgDataToMemory

{

NSString *key = @"mydata";

NSData *prevSavedData = [[NSUserDefaults standardUserDefaults] objectForKey:key];

NSMutableDictionary *decodedSingleObj = (NSMutableDictionary *)[NSKeyedUnarchiver unarchiveObjectWithData:prevSavedData];

[creatGroupInviterDictionary setDictionary:decodedSingleObj];

}

- (void)constantStoreOfflineSystemData

{

if ([creatGroupInviterDictionary.allKeys count] > 0)

{

NSString *key = @"mydata";

NSData *encodedSingleObj = [NSKeyedArchiver archivedDataWithRootObject:creatGroupInviterDictionary];

[[NSUserDefaults standardUserDefaults] setObject:encodedSingleObj forKey:key];

[[NSUserDefaults standardUserDefaults] synchronize];

}

}

creatGroupInviterDictionary 是存储 NSKeyAndValue 对象的键值对

IOS 如何持久化自定义对象 2014-08-01 01:38的更多相关文章

  1. iOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档

    1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每 ...

  2. iOS 数据持久化(1):属性列表与对象归档

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  3. iOS 自定义对象转NSDictionary

    我们在向后台Post数据的时候,常常需要把某个对象作为参数,比如在AF的框架中,我们进行Post时,其中的para参数就是需要NSdictionary的 Alamofire.request(.POST ...

  4. ios深拷贝,浅拷贝,拷贝自定义对象的简单介绍(转)

    copy语法的目的:改变副本的时候,不会影响到源对象: 深拷贝:内容拷贝,会产生新的对象.新对象计数器置为1,源对象计数器不变. 浅拷贝:指针拷贝,不会产生新的对象.源对象计数器+1. 拷贝有下面两个 ...

  5. ios存储 plist 偏好设置 自定义对象存储

    1,plist Plist注意:不能存储自定义对象 Plist:数组和字典,  如何判断一个对象能不能使用Plist,就看下有没有writeToFile 获取应用的文件夹(应用沙盒) NSString ...

  6. Java基础知识强化之集合框架笔记08:Collection集合自定义对象并遍历案例(使用迭代器)

    1. Collection集合自定义对象并遍历案例(使用迭代器) (1)首先定义一个Student.java,如下: package com.himi.collectionIterator; publ ...

  7. iOS 自定义对象及子类及模型套模型的拷贝、归档存储的通用代码

    一.runtime实现通用copy 如果自定义类的子类,模型套模型你真的会copy吗,小心有坑. copy需要自定义类继承NSCopying协议 #import <objc/runtime.h& ...

  8. iOS 深拷贝、浅拷贝、自定义对象拷贝简介

    copy语法的目的:改变副本的时候,不会影响到源对象: 深拷贝:内容拷贝,会产生新的对象.新对象计数器置为1,源对象计数器不变. 浅拷贝:指针拷贝,不会产生新的对象.源对象计数器+1. 拷贝有下面两个 ...

  9. iOS数据持久化-OC

    沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...

随机推荐

  1. PyQt5模型视图委托

    Model-View-Delegate 模型视图委托(MVD)是PyQt中特有的设计模式,类似MVC设计模式,将MVC设计模式中的Controller当做MVD中的Delegate,两者的概念基本相同 ...

  2. 软件测试必备技能,带你学习jmeter!

    一:jmeter用户变量设置: 1.在线程组鼠标右击--添加--配置元件-用户定义的变量, 2.根据业务需求自定义变量的名称,添加需要的变量和对应的值 3.在脚本对应位置添加参数 二:文件参数化: 两 ...

  3. python-多任务编程02-进程(processing)

    进程与程序 程序:例如xxx.py这是程序,是一个静态的 进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元. multiprocessing模块 multipro ...

  4. SAS X option

    1. SAS X选项就是调用DOS命令. 例子: option noxwait;/*黑窗口执行完命令后自动关闭*/ %let path =.; %let filter=*.lst; X “ dir & ...

  5. stringsream用法

    stringstream: 头文件: #include <sstream> 简单整理一下这玩意的作用,主要有三个吧. 类型转化 字符串拼接 字符串整合(这一个用处特别大!!!!!!!) 先 ...

  6. PHP array_intersect_key() 函数

    实例 比较两个数组的键名,并返回交集: <?php$a1=array("a"=>"red","b"=>"gree ...

  7. luogu P3180 [HAOI2016]地图 仙人掌 线段树合并 圆方树

    LINK:地图 考虑如果是一棵树怎么做 权值可以离散 那么可以直接利用dsu on tree+树状数组解决. 当然 也可以使用莫队 不过前缀和比较难以维护 外面套个树状数组又带了个log 套分块然后就 ...

  8. springboot集成mongo

    大家可以关注我的微信公众号“秦川以北” 后续更多精彩实用内容分享 ​在项目中配置,mongoDB数据库,spring整合 1. 引入pom依赖 <dependency> <group ...

  9. 网络通信-RESTful API 设计指南

    http://www.ruanyifeng.com/blog/2014/05/restful_api.html 作者: 阮一峰 日期: 2014年5月22日 网络应用程序,分为前端和后端两个部分.当前 ...

  10. lamp架构搭建

    目录 1. LAMP架构介绍 2.web服务器工作流程 2.1 cgi与fastcgi 2.2 httpd与php结合的方式 2.3 web工作流程 3. lamp平台搭建 3.1 安装httpd 3 ...