首页 > 代码库 > 一、利用NSUserDefaults进行对短小数据的存和取(自定义对象的存取)。
一、利用NSUserDefaults进行对短小数据的存和取(自定义对象的存取)。
NSString * string = [NSString stringWithFormat:@"JiangR"];
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:string forKey:@"string"];//存放。
[userDefaults synchronize];//同步文件,否则程序非正常退出的时候信息将不被保存
NSLog(@"string:%@",[userDefaults objectForKey:@"string"]);//读取的结果。string:JiangR
备注:
NSUserDefaults
只能对如下几类数据进行存取(NSString、NSNumber、NSDate、NSArray、NSDictionary).
如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的.
可以让这个自定义类实现协议中的
- (id) initWithCoder: (NSCoder *)coder方法和- (void) encodeWithCoder: (NSCoder *)coder方法,然后把该自定义的类对象编码到
NSData中,再从NSUserDefaults中进行读取,
举例如下:
#import
@interface MySubView :
NSObject<NSCoding>
{
NSString * _title;
NSString * _content;
}
@property(nonatomic,retain)NSString * title;
@property (nonatomic,retain)NSString * content;
@end
#import ""
//若要对类对象进行enCode/deCode.就必须先对类对象的成员变量进行enCode/deCode
//对类实例的成员变量进行解码
- (id)initWithCoder:(NSCoder *)aDecoder
{
if(self = [super init]){
self.title = [aDecoder decodeObjectForKey:@"title"];
self.content = [aDecoder decodeObjectForKey:@"content"];
}
return self;
}
//对类实例的成员变量进行编码
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:_title forKey:@"title"];
[aCoder encodeObject:_content forKey:@"content"];
}
@end
以上是自定义一个类
MySubView继承NSOject.
在另一个文件中:
MySubView * subView = [[MySubView alloc] init];
[subView setContent:@"什么叫做。。。。?"];
[subView setTitle:@"什么叫做title??"];
NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];
NSData * data = [NSKeyedArchiver archivedDataWithRootObject:subView];//将id类型转换成可存放在NSUserDefaults中的NSDate类型。
[userDefaults setObject:data forKey:@"subView"];
[userDefaults synchronize];
NSData * data_ = [[NSUserDefaults standardUserDefaults] objectForKey:@"subView"];//从NSUserDefaults中读取数据。
MySubView * string = [NSKeyedUnarchiver unarchiveObjectWithData:data_];//将读取的数据反向转换成之前的类型。
NSLog(@":%@ --- :%@",string.title,string.content);
//打印结果::什么叫做title?? --- :什么叫做。。。。?
一、利用NSUserDefaults进行对短小数据的存和取(自定义对象的存取)。