NSUserDefaults写作和阅读对象定义自己
需要编写对象必须实现NSCoding protocol
Person Class
Person.h#import <Foundation/Foundation.h>#import "Face.h"@interface Person : NSObject <NSCoding>@property (nonatomic, strong) NSString *personId;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age;
@property (nonatomic, strong) NSArray *photos;
@property (nonatomic, strong) NSDictionary *phoneNumber;@property (nonatomic, strong) Face *face;@endPerson.m#import "Person.h"@implementation Person
@synthesize personId = _personId;
@synthesize name = _name;
@synthesize age = _age;
@synthesize photos = _photos;
@synthesize phoneNumber = _phoneNumber;
@synthesize face = _face;- (id)initWithCoder:(NSCoder *)aDecoder
{if(self = [super init]){self.personId = [aDecoder decodeObjectForKey:@"id"];self.name = [aDecoder decodeObjectForKey:@"name"];self.age = [[aDecoder decodeObjectForKey:@"age"] integerValue];self.photos = [aDecoder decodeObjectForKey:@"photos"];self.phoneNumber = [aDecoder decodeObjectForKey:@"phoneNumber"];self.face = [aDecoder decodeObjectForKey:@"face"];}return self;
}- (void)encodeWithCoder:(NSCoder *)aCoder
{[aCoder encodeObject:self.personId forKey:@"id"];[aCoder encodeObject:self.name forKey:@"name"];[aCoder encodeObject:[NSNumber numberWithInteger:self.age] forKey:@"age"];[aCoder encodeObject:self.photos forKey:@"photos"];[aCoder encodeObject:self.phoneNumber forKey:@"phoneNumber"];[aCoder encodeObject:self.face forKey:@"face"];
}
Face Class
Face.h#import <Foundation/Foundation.h>@interface Face : NSObject <NSCoding>@property (nonatomic, strong) NSString *head;
//@property (nonatomic, strong) NSString *eyes;
//@property (nonatomic, strong) NSString *nose;
//@property (nonatomic, strong) NSString *mouth;
//@property (nonatomic, strong) NSString *ears;@endFace.m#import "Face.h"@implementation Face- (id)initWithCoder:(NSCoder *)aDecoder
{if(self = [super init]){self.head = [aDecoder decodeObjectForKey:@"head"];}return self;
}- (void)encodeWithCoder:(NSCoder *)aCoder
{[aCoder encodeObject:self.head forKey:@"head"];
}@end
写入和读取操作Person *person = [[Person alloc] init];person.personId = @"123456789";person.name = @"Hunk";person.age = 10;person.photos = @[@"a.png", @"b.png", @"c.png"];person.phoneNumber = @{@"mobile_phone" : @"987654321", @"work" : @"01012345678"};Face *face = [[Face alloc] init];face.head = @"Round shape";person.face = face;NSData *personData0 = [NSKeyedArchiver archivedDataWithRootObject:person];[[NSUserDefaults standardUserDefaults] setObject:personData0 forKey:@"person"];[[NSUserDefaults standardUserDefaults] synchronize];NSData *personData1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"person"];Person *person1 = [NSKeyedUnarchiver unarchiveObjectWithData:personData1];
版权声明:本文博主原创文章,博客,未经同意不得转载。
NSUserDefaults写作和阅读对象定义自己相关推荐
- [置顶] 为什么要阅读源代码?如何有效的阅读源代码? 选一些比较优秀的开源产品作为源代码阅读对象?...
盛大TeamHost上有个关于学习开源项目的wiki :http://www.teamhost.org/projects/learn-with-open-source/wiki/Wiki 一.为什么要 ...
- 为什么要阅读源代码?如何有效的阅读源代码? 选一些比较优秀的开源产品作为源代码阅读对象?
一.为什么要阅读源代码? 很多作家成名之前都阅读过大量的优秀文学作品,经过长期的阅读和写作积累,慢慢的才有可能写出一些好的.甚至是优秀的文学作品. 而程序员与此类似,很多程序员也需要阅读大量的优秀程序 ...
- openerp经典收藏 对象定义详解(转载)
对象定义详解 原文地址: http://shine-it.net/index.php/topic,2159.0.html http://blog.sina.com.cn/s/blog_57ded94e ...
- .Net Framework 4.5.1 ASP.NET MVC 5 下新建视图报“错误 运行所选代码生成器时出错 无法检索元数据 没有为该对象定义无参数构造函数”...
当在控制器中新建视图的时候,选择的视图界面如下: 执行添加后报如下错误: 错误的内容为: 错误 运行所选代码生成器时出错 无法检索"XXX"的元数据 没有为该对象定义无参数构造函数 ...
- 区分一下强制类型转换运算符重载/赋值运算符重载/对象定义的赋值
这三个名字可能很绕,看着也很不一样,但其实是三个很容易混淆的概念,并且经常在实际编程中遇到.这里拿出来比较一下. 首先是强制类型转换运算符的重载,作用是当前对象向其他类型的转换,常见的形式是 oper ...
- SQL Server中授予用户查看对象定义的权限
在SQL Server中,有时候需要给一些登录名(用户)授予查看所有或部分对象(存储过程.函数.视图.表)的定义权限存.如果是部分存储过程.函数.视图授予查看定义的权限,那么就像下面脚本所示,比较 ...
- Geometry(几何对象定义空间位置和关联几何形状)
Geometry 描述 几何对象定义空间位置和关联几何形状. 讨论 在许多地理处理工作流中,您可能需要使用坐标和几何信息运行特定操作,但不一定想经历创建新(临时)要素类.使用光标填充要素类.使用要素类 ...
- 南大通用数据库-Gbase-8a-学习-34-gcdump(导出数据库对象定义)
目录 一.测试环境 二.介绍 三.命令帮助 四.参数介绍 1.--print-defaults (1)含义 (2)例子 2.--connect_timeout (1)含义 (2)例子 3.-A, -- ...
- wordVBA运行时错误‘4198‘:应用程序定义或对象定义错误 解决方法
项目场景: Word VBA 问题描述: 最近在学习wordVBA时遇到以下问题:运行时错误'4198':应用程序定义或对象定义错误 这是我写的一段Excel VBA操作Word的代码,作用是打开已存 ...
最新文章
- 折腾了一晚上Windows网络却未果
- vCloud Automation Center (vCAC) 6.0 (二)
- 【AI2】更新app inventor2离线开发环境AppInventor2021,安卓app图形化开发环境
- Linux平台下 vimrc配置(转网友:http://blog.csdn.net/wooin/article/details/1887737)
- 网络分流器|运营商光纤延距解决方案
- CPU,MPU,MCU,SOC,SOPC联系与差别
- react项目打包后路径找不到,项目打开后页面空白的问题
- 英语口语-文章朗读Week8 Friday
- Hibernate5-1对多(1:n)-级联删除-cascade=delete-orphanl
- 如何激活windows的远程终端
- 计算机毕业设计ssm汽车租赁系统42876系统+程序+源码+lw+远程部署
- We Will Rock You
- 南阳oj入门题-阶乘因式分解(一)
- 新版标准日本语中级_第二十三课
- Excel 2010 SQL应用048 比较两列数据是否相同
- WINVNC源码分析(三)——omni_thread库
- 递归算法与非递归算法的转化
- LS1046A QSPI FLASH memory map setting
- bonjour 概述
- 设置套接字属性和获取套接字属性,举例子设置套接字端口可重用
热门文章
- 聊聊 API Gateway 和 Netflix Zuul
- 记录:成功配置 centos + nginx + .net core 2.0
- 关于Android 的内存泄露及分析
- 【计算几何】【极角序】【二分】bzoj1914 [Usaco2010 OPen]Triangle Counting 数三角形
- CentOS下编译安装LAMP开发环境
- 用Word2007写Blog
- PPC莫名死机,上周末为此hard reset了两次重装,这几天又历史重演,今天再次硬复位。想我那个Palm TT...
- 《Ray Tracing in One Weekend》——Chapter 9: Dielectrics
- 问题四十四:怎么用ray tracing画空间任意位置的圆环的任意片段
- 大数据分析入门小技巧