让NSUserDefaults使用起来像对象一样容易

巧妙的设计,是为了简化开发提升效率而存在。

设计要点:

1. 单例模式

2. 重写setter,getter方法

3. 专门的类来管理单例

使用时候的详情:

源码:

SharedInstance.h 与 SharedInstance.m

//
// SharedInstance.h
// NSUserDefault
//
// Created by YouXianMing on 14/12/5.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import <Foundation/Foundation.h>
#import "NSUserDefaultsObject.h" /**
* 单例管理器
*/
@interface SharedInstance : NSObject + (NSUserDefaultsObject *)defaultsObject; @end
//
// SharedInstance.m
// NSUserDefault
//
// Created by YouXianMing on 14/12/5.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "SharedInstance.h" static NSUserDefaultsObject *_defaultObject = nil; @implementation SharedInstance /**
* 构造单例的类方法
*/
+ (void)initialize {
if (self == [SharedInstance class]) {
_defaultObject = [NSUserDefaultsObject new];
}
} + (NSUserDefaultsObject *)defaultsObject {
return _defaultObject;
} @end

NSUserDefaultsObject.h 与 NSUserDefaultsObject.m

//
// NSUserDefaultsObject.h
// NSUserDefault
//
// Created by YouXianMing on 14/12/5.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import <Foundation/Foundation.h> @interface NSUserDefaultsObject : NSObject @property (nonatomic, strong) NSString *name; @end
//
// NSUserDefaultsObject.m
// NSUserDefault
//
// Created by YouXianMing on 14/12/5.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "NSUserDefaultsObject.h" @implementation NSUserDefaultsObject #pragma mark - 重写setter,getter方法
@synthesize name = _name;
- (void)setName:(NSString *)name {
[[NSUserDefaults standardUserDefaults] setValue:name forKey:@"name"];
}
- (NSString *)name {
return [[NSUserDefaults standardUserDefaults] valueForKey:@"name"];
} @end

核心源码:

让NSUserDefaults使用起来像对象一样容易的更多相关文章

  1. iOS开发笔记9:NSUserDefaults存储自定义实体对象

    NSUserDefaults常常用来本地存储一些简单的数据,例如用户信息等等,NSUserDefaults支持floats.doubles.integers.Booleans.URLs.NSData. ...

  2. 高级UIKit-04(NSUserDefaults、NSKeyedArchiver、对象归档方法)

    [day05_1_UserDefault]:判断应用程序是否是第一次运行 NSUserDefaults:用来保存应用程序的配置信息如:程序运行次数,用户登陆信息等. // 使用系统提供的NSUserD ...

  3. NSUserDefaults写作和阅读对象定义自己

    需要编写对象必须实现NSCoding protocol Person Class Person.h #import <Foundation/Foundation.h> #import &q ...

  4. NSUserDefaults 保存自己定义对象

    项目里json返回的一个model须要保存下来,这个model是固定的没必须去创建表,想到了NSUserDefaults来存储,暂不考虑安全问题. NSUserDefaults没法直接存储一个对象.在 ...

  5. 利用NSUserdefaults来存储自定义的NSObject类及自定义类数组

    利用NSUserdefaults来存储自定义的NSObject类及自定义类数组 1.利用NSUserdefaults来存储自定义的NSObject类 利用NSUserdefaults也可以来存储及获取 ...

  6. ios 简单的plist文件读写操作(Document和NSUserDefaults)

    最近遇到ios上文件读写操作的有关知识,记录下来,以便以后查阅,同时分享与大家. 一,简单介绍一下常用的plist文件. 全名是:Property List,属性列表文件,它是一种用来存储串行化后的对 ...

  7. iOS开发之NSUserDefaults

    在ios中偏好设置保存用户配置的对象 //NSUserDefaults读取 //获取标准函数对象 //通过对象获取名称下NSMutableDictionary数据 NSUserDefaults *de ...

  8. NSUserDefaults保存用户名和密码

    #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...

  9. IOS数据存储之归档/解档

    前言: 前天学习了NSUserDefaults,我们知道NSUserDefaults不能保存自定义对象,所以我们今天来认识一下归档(NSKeyedArchiver)和解档(NSKeyedUnarchi ...

随机推荐

  1. python fileinput处理多文件

    import fileinput with fileinput.input(files=(path1,path2)) as f: for line in f: print(line)

  2. 【lua】如何倒序查找字符

    现在有这样一个需求,有一个字符串,需要查找字符i最后出现的位置,不过相对于其他语言来说,Lua并没有提供这一操作,那么如何是好? 现在有这样几个方法: string.sub(str, i ,j) 功能 ...

  3. 【ExtJS】FormPanel表单验证

    在Extjs中,FormPane表单提供了各种各样的验证. 在表单验证前需要在onReady的function({})内添加以下代码: Ext.QuickTips.init();    //为组件提供 ...

  4. Unity5.x在mac下的破解

    工具下载 http://www.ceeger.com/forum/read.php?tid=23396&uid=24111 破解unity5.x版本亲测有效 但是他的说明不详细 下载后,里面有 ...

  5. Java调用打印机打印指定路径图片

    依赖 javax.print package com.xgt.util; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; ...

  6. Python爬取电影天堂指定电视剧或者电影

    1.分析搜索请求 一位高人曾经说过,想爬取数据,要先分析网站 今天我们爬取电影天堂,有好看的美剧我在上面都能找到,算是很全了. 这个网站的广告出奇的多,用过都知道,点一下搜索就会弹出个窗口,伴随着滑稽 ...

  7. 推荐系统(Recommender System)

    推荐系统(Recommender System) 案例 为用户推荐电影 数据展示 Bob Tom Alice Jack 动作成分 浪漫成分 Movie1 5 ? 0 3 ? ? Movie2 ? 0 ...

  8. solr6.6教程-基础环境搭建(一)

    目前网上关于solr6.+的安装教程很少,有些6.0之前的教程在应用到6.+的版本中出现很多的问题,所以特别整理出来这一片文章,希望能给各位码农一些帮助! 很少写些文章,如有不对的地方,还希望多多指导 ...

  9. java获取request的头信息

    1.获取全部头信息: //get request headers private Map<String, String> getHeadersInfo() { Map<String, ...

  10. chmod修改文件的权限/chown修改文件和目录的所有者(转)

    ll指令的显示的信息为(当前目录下只有nameservice1一个目录): drwxr-xr-x 3 hdfs hdfs 4096 4月 14 16:19 nameservice1 上述信息分别表示: ...