如果持久话自定义对象 那么这个对象一定要遵循 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. 数据库分布式事务XA规范介绍及Mysql底层实现机制

    1. 引言 分布式事务主要应用领域主要体现在数据库领域.微服务应用领域.微服务应用领域一般是柔性事务,不完全满足ACID特性,特别是I隔离性,比如说saga不满足隔离性,主要是通过根据分支事务执行成功 ...

  2. 记录一次JSON数据处理(省市区数据)

    最近在实习工作中遇到了一个需要问题:将后台返回的省市区 json 数据格式化以便前端渲染.这个问题真的是缠绕了我好几天,有思路但是思路特别模糊,今天终于解决了. 返回的数据格式如下: [ { &quo ...

  3. Flutter获取远程数据 刷新UI界面

    import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; void main() => r ...

  4. Ansible部署zabbix-agent

    playbook目录 zabbix/ ├── hosts ##定义的主机列表 ├── install_zabbix_agent.yml ##安装入口文件 └── roles ├── install_z ...

  5. Tomcat内部结构、工作原理、工作模式和运行模式

    TOMCAT的内部结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的是Catalina servlet容器,其他组件按照一定的格式要求配置在这个顶层容器中.Tomcat的 ...

  6. Day02_CMS前端开发

    CMS前端开发 1 Vue.js与Webpack研究 参考链接:https://www.cnblogs.com/artwalker/p/13387386.html 2 CMS前端工程创建 2.1 导入 ...

  7. 从RNN到BERT

    一.文本特征编码 1. 标量编码 美国:1 中国:2 印度:3 … 朝鲜:197 标量编码问题:美国 + 中国 = 3 = 印度 2. One-hot编码 美国:[1,0,0,0,…,0]中国:[0, ...

  8. PHP symlink() 函数

    定义和用法 symlink() 函数创建一个从指定名称连接的现存目标文件开始的符号连接. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 symlink(target,link) ...

  9. PHP connection_aborted() 函数

    实例 创建一个函数(check_abort()),在客户机终止脚本时写入一条日志消息: <?phpfunction check_abort(){if (connection_aborted()) ...

  10. 剑指 Offer 57. 和为s的两个数字

    本题 题目链接 题目描述 我的题解 双指针 思路分析 因为该数组是递增数组,所以我们可以用双指针法. 声明指针left 和 right分别指向数组的头(数组下标为0)和尾(数组下标为length-1) ...