您的位置:首页 > 移动开发 > IOS开发

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

2014-07-24 09:59 507 查看
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>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息