NSUserDefaults 数据存储及自定义对象的存储

NSUserDefaults 是苹果为开发者提供的一个较轻量级的数据存储工具,他支持的存储类型包括NSData, NSString, NSNumber, NSDate, NSArray, or NSDictionary。但是如果在NSArray或NSDictionary中存在自定义的对象,就会出现错误,这时候需要将自定义的对象转换为NSData然后存入就不会出现问题了。NSUserDefaults作为存储使用所以以单例方式出现。使用NSUserDefaults来存储一些简单的数据十分的方便而且效率也比较快。

我们先来看看一般的操作

<span style="font-size:18px;">//设置当前标题
[[NSUserDefaults standardUserDefaults] setValue:@"Title" forKey:@“CurrentTitle”];
//获得当前标题
[[NSUserDefaults standardUserDefaults] objectForKey:@"CurrentTitle“];</span>



如果你要存储自定义的对象,可以使用<NSCoding>协议中的 - (id) initWithCoder: (NSCoder *)coder方法(对属性编码)和- (void) encodeWithCoder: (NSCoder *)coder方法(对属性解码)

</pre><pre name="code" class="objc"><span style="font-size:18px;"></span>
<span style="font-size:18px;">@interface Person: NSObject<NSCoding>
{
	NSStirng *name;
	NSInteger age;
}
@property (nonatomic, Strong)NSString     *name;
@property (nonatomic, assign) NSInteger    age;
@end

#import "CMLotteryTicket.h"
@implementation CMLotteryTicket
@synthesize      name; 
@synthesize      age;
//将对象编码(序列化)
- (void)encodeWithCoder:(NSCoder *)aDecoder
{
    [aDecoder encodeInt:name forKey:@"name"];
    [aDecoder encodeInt:age forKey:@"age"];
}
//将对象解码(反序列化) 
- (id)initWithCoder:(NSCoder *)aCoder
{
     if (self = [super init]) {
     m_ltid = [aCoder decodeIntForKey:@"name"];
     m_kktype = [aCoder decodeIntForKey:@"name"];
     }
     return self;
}
@end
Person *person = [[Person alloc] init];
person.age = 15;
person.name = @"lilei";
[[NSUserDefaults standardUserDefaults] setValue:person forKey:@“lilei”];
[[NSUserDefaults standardUserDefaults] objectForKey:@"lilei“];</span>

<span style="font-size:18px;"></span>

<span style="font-size:14px;"></span><pre name="code" class="objc"><span style="font-family: Arial;"></span>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值