1、在iOS开发中,对象的归档存储是最为常用一种操作,我们经常需要将对象保存到本地,后续再从本地读取调用,比如说游戏中的存档操作。
2、常规类型如字符串、数组、字典、图片等对象的归档系统都有对应的方法,使得归档变得简单,那么自定义的对象如何归档呢?
3、实现原理与常规类型归档类似,唯一不同的是自定义对象如果需要归档则必须遵守协议,并实现该协议中的两个方法:
1
2
3
4
| #pragma mark 自定义对象解档必须实现方法
- (id)initWithCoder:(NSCoder *)aDecoder
#pragma mark 自定义对象归档必须实现方法
- (void)encodeWithCoder:(NSCoder *)aCoder |
#pragma mark 自定义对象解档必须实现方法
- (id)initWithCoder:(NSCoder *)aDecoder
#pragma mark 自定义对象归档必须实现方法
- (void)encodeWithCoder:(NSCoder *)aCoder
4、举例说明,现自定义一个Person类,成员变量有name、age、phone,现需要对该对象进行归档,对象该如何写:
4.1、Person.h
1
2
3
4
5
6
7
8
9
10
11
12
13
| #import <Foundation/Foundation.h>
@interface Person : NSObject <nscoding>
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age;
@property (nonatomic, strong) NSString *phone;
- (id)initWithName:(NSString *)name age:(NSInteger)age phone:(NSString *)phone;
@end</nscoding> |
#import <Foundation/Foundation.h>
@interface Person : NSObject <nscoding>
@property (nonatomic, strong) NSString *name;
@property (nonatomic, assign) NSInteger age;
@property (nonatomic, strong) NSString *phone;
- (id)initWithName:(NSString *)name age:(NSInteger)age phone:(NSString *)phone;
@end</nscoding>
4.2、Person.m[……]
继续阅读