ios序列化
来源:互联网 发布:淘宝预售定金就是坑 编辑:程序博客网 时间:2024/06/11 02:31
你于写数据需要本地存储时,即将你的数据写到硬盘上的时候,你就必须对他进行序列化,转换成二进制文件,从而便于在磁盘上的读写,同理在取出的时候必须将其在反序列化,这样才能将数据读出来,就好比加密和解密的过程。
NSUserDefaults只支持: NSString, NSNumber, NSDate, NSArray, NSDictionary.
如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的。
那怎么办呢?
让这个自定义类实现<NSCoding>协议中的- (id) initWithCoder: (NSCoder *)coder方法和- (void) encodeWithCoder: (NSCoder *)coder方法(obj-c的协议protocol就是java的接口interface,就是C++的纯虚函数),然后把该自定义的类对象编码到NSData中,再从NSUserDefaults中进行读取。假设有这样一个简单的类对象view plaincopy to clipboardprint?@interface BusinessCard : NSObject <NSCoding>{ NSString *_firstName; NSString *_lastName; } @property (nonatomic, retain) NSString *_firstName; @property (nonatomic, retain) NSString *_lastName; @end; @implementation BusinessCard @synthesize _firstName, _lastName; - (void)dealloc{ [_firstName release]; [_lastName release]; [super dealloc]; } - (id) initWithCoder: (NSCoder *)coder { if (self = [super init]) { self._firstName = [coder decodeObjectForKey:@"_firstName"]; self._lastName = [coder decodeObjectForKey:@"_lastName"]; } return self; } - (void) encodeWithCoder: (NSCoder *)coder { [coder encodeObject:_firstName forKey:@"_firstName"]; [coder encodeObject:_lastName forKey:@"_lastName"]; } @end然后再存取时通过NSData做载体:BusinessCard *bc = [[BusinessCard alloc] init]; NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; NSData *udObject = [NSKeyedArchiver archivedDataWithRootObject:bc]; [ud setObject:udObject forKey:@"myBusinessCard"]; [bc release]; udObject = nil; udObject = [ud objectForKey:@"myBusinessCard"]; bc = [NSKeyedUnarchiver unarchiveObjectWithData:udObject] ;
阅读全文
0 0
- IOS NScoding 序列化
- IOS JSON 序列化
- ios 序列化
- IOS NScoding 序列化
- iOS对象序列化 .
- iOS对象序列化
- IOS 对象序列化
- ios序列化
- ios序列化最终方案
- ios序列化最终方案
- ios序列化最终方案
- iOS属性列表序列化
- IOS 之对象序列化
- iOS对象的序列化
- iOS之序列化PHAsset
- IOS 序列化与反序列化
- iOS 序列化与反序列化
- IOS 序列化与反序列化
- Spring和SpringMVC的区别
- 百度 地点输入提示服务 API 学习笔记
- 虚拟机
- 【数据结构与算法】链表1:单向链表(Java实现)
- TP框架封装无限极分类
- ios序列化
- python Day3 python基础知识总结
- iOS点击短信中的链接跳转到App
- JavaScript知识夯实系列-2.基础语法
- win10 sublime text3配置c++
- 未来设计师的核心价值在哪里
- 百度apollo一站式部署
- 离散余弦变换(DCT)
- 设计模式_状态模式(23)