让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

核心源码:

时间: 2025-01-22 04:48:23

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

NSUserDefaults 保存自己定义对象

项目里json返回的一个model须要保存下来,这个model是固定的没必须去创建表,想到了NSUserDefaults来存储,暂不考虑安全问题. NSUserDefaults没法直接存储一个对象.在网上找到了方法.如今分享下. 首先要写一个对象,详细代码例如以下: .h文件 @interface CustomSerModel : NSObject @property(nonatomic,retain)NSString *m_deptId;//部门编号 @property(nonatomic,r

NSUserDefaults保存用户名和密码

#import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UITextField *nameTextField; @property (weak, nonatomic) IBOutlet UITextField *ageTextField; @end @implementation ViewController - (void)viewDidLoad { [s

本地数据持久化方法

http://www.jianshu.com/p/86ea6da905cf http://www.cocoachina.com/industry/20130328/5908.html 1. 属性列表(plist)NSUserDefaults 属性列表是一种明文的轻量级存储方式,其存储格式有多种,最常规格式为XML格式.在我们创建一个新的项目的时候,Xcode会自动生成一个info.plist文件用来存储项目的部分系统设置.plist只能用数组(NSArray)或者字典(NSDictionary)

iOS边练边学--应用数据存储的常用方式(plist,Preference,NSKeyedArchiver)其中的三种

iOS应用数据存储的常用方式: XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3--这里暂且不讲 Core Data--这里暂且不讲 一.应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示 二.应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Do

第三章:iOS的数据存储与IO

如果应用程序值需要保存程序参数.选项相关的少量数据,则可使用NSUserDefaults进行保存; 如果应用程序只是少量数据需要保存,那使用属性列表文件就可以了; 如果应用程序有大量数据需要存储.访问,就需要借助于数据库.iOS系统内置了SQLite数据库,SQLite数据库是一个真正轻量级的数据库,他没有后台进程,整个数据库就对应于一个文件,这样就可以非常方便的在不同设备之间移植.iOS为访问SQLite数据库提供了两套API:基于C语言风格的libsqlite3.dylib和面向对象的Cor

使用偏好设置存储数据

偏好设置 iOS应用支持偏好设置,要来保存数据,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置. 每个应用都有一个NSUserDefaults实例,通过它来存取偏好设置. + (NSUserDefaults *)standardUserDefaults //单例对象 存储偏好设置使用set开头的方法,如: NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; [default

通讯录(练习)

#import <UIKit/UIKit.h> @interface RootViewController : UIViewController <UITableViewDataSource,UITableViewDelegate> @end #import "RootViewController.h" #import "SecondViewController.h" @interface RootViewController () { NS

Object-c 数据存储知识大聚会

通常程序在运行中或者程序结束之后,需要保存一些信息,而且需要持久化存储信息,比如登陆信息.视频播放记录.收藏记录等等,那么我们可以采用以下几种方式对数据进行持久化保存. 1.文件 2.plist 3.归档 4.NSUserDefaults 5.数据库 [Plist](文件的一种) <1> 什么是plist文件, plist文件的作用 1.plist文件:property list  属性列表文件,文件的内容只能是 NSString NSNumber NSDate NSData NSArray

本地缓存方式

iOS本地缓存数据方式有五种: 1.直接写文件方式:可以存储的对象有NSString.NSArray.NSDictionary.NSData.NSNumber,数据全部存放在一个属性列表文件(*.plist文件)中. 2.NSUserDefaults(偏好设置),用来存储应用设置信息,文件放在perference目录下. 3.归档操作(NSkeyedArchiver),不同于前面两种,它可以把自定义对象存放在文件中. 4.coreData:coreData是苹果官方iOS5之后推出的综合型数据库