IOS 如何持久化自定义对象 2014-08-01 01:38
如果持久话自定义对象 那么这个对象一定要遵循 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的更多相关文章
- iOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档
1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每 ...
- iOS 数据持久化(1):属性列表与对象归档
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...
- iOS 自定义对象转NSDictionary
我们在向后台Post数据的时候,常常需要把某个对象作为参数,比如在AF的框架中,我们进行Post时,其中的para参数就是需要NSdictionary的 Alamofire.request(.POST ...
- ios深拷贝,浅拷贝,拷贝自定义对象的简单介绍(转)
copy语法的目的:改变副本的时候,不会影响到源对象: 深拷贝:内容拷贝,会产生新的对象.新对象计数器置为1,源对象计数器不变. 浅拷贝:指针拷贝,不会产生新的对象.源对象计数器+1. 拷贝有下面两个 ...
- ios存储 plist 偏好设置 自定义对象存储
1,plist Plist注意:不能存储自定义对象 Plist:数组和字典, 如何判断一个对象能不能使用Plist,就看下有没有writeToFile 获取应用的文件夹(应用沙盒) NSString ...
- Java基础知识强化之集合框架笔记08:Collection集合自定义对象并遍历案例(使用迭代器)
1. Collection集合自定义对象并遍历案例(使用迭代器) (1)首先定义一个Student.java,如下: package com.himi.collectionIterator; publ ...
- iOS 自定义对象及子类及模型套模型的拷贝、归档存储的通用代码
一.runtime实现通用copy 如果自定义类的子类,模型套模型你真的会copy吗,小心有坑. copy需要自定义类继承NSCopying协议 #import <objc/runtime.h& ...
- iOS 深拷贝、浅拷贝、自定义对象拷贝简介
copy语法的目的:改变副本的时候,不会影响到源对象: 深拷贝:内容拷贝,会产生新的对象.新对象计数器置为1,源对象计数器不变. 浅拷贝:指针拷贝,不会产生新的对象.源对象计数器+1. 拷贝有下面两个 ...
- iOS数据持久化-OC
沙盒详解 1.IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文 ...
随机推荐
- #python自动化测试#代码执行时间测量模块timeit
1. timeit模块timeit模块可以用来测试一小段python代码的执行速度 class timeit.Timer(stmt = 'pass',setup = 'pass',timer=< ...
- SpringBoot 整合Mybatis + PageHelper 实现分页
前言: 现在公司大多数都实现了前后端分离,前端使用Vue.React.AngularJS 等框架,不用完全依赖后端.但是如果对于比较小型的项目,没必要前后端分离,而SpringBoot也基本抛弃了Js ...
- 理解Spring(二):AOP 的概念与实现原理
目录 什么是 AOP AOP 的基本术语 Spring AOP 的简单应用 Spring AOP 与动态代理 Spring AOP 的实现原理(源码分析) 扩展:为什么 JDK 动态代理要求目标类必须 ...
- Flutter学习笔记(41)--自定义Dialog实现版本更新弹窗
如需转载,请注明出处:Flutter学习笔记(41)--自定义Dialog实现版本更新弹窗 功能点: 1.更新弹窗UI 2.强更与非强更且别控制 3.屏蔽物理返回键(因为强更的时候点击返回键,弹窗会消 ...
- Java基础之(IO流)
简介: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作. 一.File ...
- html头文件设置常用之<meta>设置
也许很多开发人员并没有重视meta标签,我就是其中一个,但是meta标签的功能很强大,下面就来说说meta标签! <meta http-equiv="pragma" cont ...
- 宿主机连接docker中的mysql
宿主机连接docker中的mysql dokcer安装mysql docker run \ --name mysql \ -v $PWD/mysql:/var/lib/mysql \ -p 330 ...
- Centos 7下编译安装PHP7.2(与Nginx搭配的安装方式)
一.下载源码包 百度云网盘下载地址:https://pan.baidu.com/s/1li4oD3qjvFyIaEZQt2NVRg 提取码:4yde 二.安装php依赖组件 yum -y instal ...
- 一个简单的Android小实例分享,包含recycleView与recyclerView嵌套
先上图: 1.首页 2.第二页 3.第三页 项目目录: 代码不多,本人太懒,就不贴了 项目地址:
- Socket通信,基本方法介绍
Socket是什么呢? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口. 在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口 ...