KRISKEE'S BLOG[GO]

NSUserDefaults进行轻量级数据持久化操作

  关于iOS本地数据持久化操作,除了使用SQLiteCoreDataPlist以及本地沙盒路径(归档)外,还有一种更加轻量级存储方法——NSUserDefaults,用于存储一些简单的数据,类似于字符串,数字,数组,字典等。

  NSUserDefaults 实际上是一个单例,只有一个实例对象,在程序中通过方法: + (NSUserDefaults *)standardUserDefaults; 进行实例化。也就是说,无论使用多少个不同的名称的对象调用它的方法,都能获取存储在 NSUserDefaults 中的数据。

  这是 NSUserDefaults.h 源文件中储存/获取数据的方法,存储方式是KVC :

// 通过key获取数据(对象类型)
- (nullable id)objectForKey:(NSString *)defaultName;
// 通过key存储数据(对象类型)
- (void)setObject:(nullable id)value forKey:(NSString *)defaultName;
// 通过key删除数据
- (void)removeObjectForKey:(NSString *)defaultName;

// 通过key获取数据:字符串,数组,字典,data,字符串数组,整型,(单、双精度)浮点型,布尔值,URL等
- (nullable NSString *)stringForKey:(NSString *)defaultName;
- (nullable NSArray *)arrayForKey:(NSString *)defaultName;
- (nullable NSDictionary<NSString *, id> *)dictionaryForKey:(NSString *)defaultName;
- (nullable NSData *)dataForKey:(NSString *)defaultName;
- (nullable NSArray<NSString *> *)stringArrayForKey:(NSString *)defaultName;
- (NSInteger)integerForKey:(NSString *)defaultName;
- (float)floatForKey:(NSString *)defaultName;
- (double)doubleForKey:(NSString *)defaultName;
- (BOOL)boolForKey:(NSString *)defaultName;
- (nullable NSURL *)URLForKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);

// 通过key存储数据:整型,(单、双精度)浮点型,布尔值,URL
- (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName;
- (void)setFloat:(float)value forKey:(NSString *)defaultName;
- (void)setDouble:(double)value forKey:(NSString *)defaultName;
- (void)setBool:(BOOL)value forKey:(NSString *)defaultName;
- (void)setURL:(nullable NSURL *)url forKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);

  

  现在,通过代码实现一下:

 1 #import "ViewController.h"
 2 
 3 @interface ViewController ()
 4 
 5 @property (weak, nonatomic) IBOutlet UITextField *textSave;
 6 @property (weak, nonatomic) IBOutlet UITextField *textShow;
 7 
 8 @end
 9 
10 @implementation ViewController
11 
12 - (void)viewDidLoad {
13     [super viewDidLoad];
14 }
15 
16 #pragma mark 储存文本
17 - (IBAction)saveText:(UIButton *)sender {
18 
19     if(_textSave.text){
20         // 存储文本数据
21         [[NSUserDefaults standardUserDefaults]setObject:_textSave.text forKey:@"text"];
22     }
23 
24 }
25 
26 #pragma mark 显示文本
27 - (IBAction)showText:(UIButton *)sender {
28 
29     if([[NSUserDefaults standardUserDefaults]stringForKey:@"text"]){
30         // 通过key获取存储文本
31         _textShow.text = [[NSUserDefaults standardUserDefaults] stringForKey:@"text"];
32     }
33 
34 }
35 
36 - (void)didReceiveMemoryWarning {
37     [super didReceiveMemoryWarning];
38     // Dispose of any resources that can be recreated.
39 }
40 
41 @end

  

  

posted @ 2016-05-09 13:53  Kriskee  阅读(211)  评论(0编辑  收藏  举报