NSUserDefaults保存NSObject类型的方法
来源:互联网 发布:淘宝网野生松杉灵芝 编辑:程序博客网 时间:2024/05/20 11:46
查看官方的API,NSUserDefaults支持保存的数据类型有:NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary
对于,我们创建的NSObject不可以直接保存,如果调用setObject,会提示出错,信息如下:
*** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value ‘<Student: 0x8399f70>’ of class ‘Student’. Note that dictionaries and arrays in property lists must also contain only property values.
当保存一个Student对象时,提示我,NSUserDefaults没有这样的属性,那么如果想要保存student中的信息,可以将studnet的信息保存到一个NSDictionary中,然后获取到这个NSDictionary,再从它里面获取每一个属性;
当然这种方式弱爆了,注意一下上面保存的类型可以保存NSData类型,不防将Student类转换为NSData类型,然后
取值时再将NSData转化为Student类;
还是用代码来说明:
对于,我们创建的NSObject不可以直接保存,如果调用setObject,会提示出错,信息如下:
*** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value ‘<Student: 0x8399f70>’ of class ‘Student’. Note that dictionaries and arrays in property lists must also contain only property values.
当保存一个Student对象时,提示我,NSUserDefaults没有这样的属性,那么如果想要保存student中的信息,可以将studnet的信息保存到一个NSDictionary中,然后获取到这个NSDictionary,再从它里面获取每一个属性;
当然这种方式弱爆了,注意一下上面保存的类型可以保存NSData类型,不防将Student类转换为NSData类型,然后
取值时再将NSData转化为Student类;
还是用代码来说明:
<span style="font-size:14px;">Student.h 代码 #import <Foundation/Foundation.h>@interface Student : NSObject <NSCoding>{ NSString *name;}@property (nonatomic, retain) NSString *name;@endStudent.m 代码#import "Student.h"@implementation Student@synthesize name;- (void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:self.name forKey:@"name"];}- (id)initWithCoder:(NSCoder *)aDecoder{ self = [super init]; if (self) { self.name = [aDecoder decodeObjectForKey:@"name"]; } return self;}- (void)dealloc{ [name release]; name = nil; [super dealloc];}@end调用的代码:Student *student = [[Student alloc] init];[student setName:@"Jordy"];NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];NSData *studentData = [NSKeyedArchiver archivedDataWithRootObject:student];[userDefault setObject:studentData forKey:@"Student"];[userDefault synchronize];[student release];NSData *data = [userDefault objectForKey:@"Student"];Student *stu = [NSKeyedUnarchiver unarchiveObjectWithData:data];NSLog(@"stu: %@, stu.name: %@",stu,stu.name); </span>
0 0
- NSUserDefaults保存NSObject类型的方法
- iOS 用NSUserDefaults保存对象的方法
- NSUserDefaults保存的数据
- NSUserDefaults保存的数据
- NSUserDefaults保存的数据
- NSObject的常用方法
- NSObject的isEqual:方法
- NSObject 的 load 方法
- NSObject的常见方法
- NSObject的内省方法
- NSObject的方法说明
- NSUserDefaults保存的数据 synchornize
- NSUserDefaults立即保存的问题
- iOS的数据保存-NSUserDefaults
- 用系统NSUserDefaults方法保存历史数据
- 用系统NSUserDefaults方法保存历史数据
- NSObject.h里的方法.
- iOS: NSObject的方法cancelPreviousPerformRequestsWithTarget:
- wifi pineapple | WiFiPineapple plus 基本设置
- WebBrowser 事件讲解
- 你需要知道的 16 个 Linux 服务器监控命令
- JAVA中使用FTPClient实现FTP上文件的操作
- 【IOS网络编程】socket编程 - Asyncsocket
- NSUserDefaults保存NSObject类型的方法
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
- js实现图片滚动
- Lua中获取指定月份总天数
- activity切换动画原理
- BCM7xxx目录结构
- 判断两条直线(线段)的交点问题
- 海尔CEO张瑞敏演讲语录
- Hadoop-2.2.0中文文档—— MapReduce下一代- 可插入的 Shuffle 和 Sort