iphone数据存储之--NSUserDefaults
用来存储用户偏好数据,生成 .plist文件保存到iphone,在 app同级目录的/Library/Preferences目录下
数据采用键值对的方式访问和设置
使用时候可以自定义一个单列模式的类,比如UserPreference,封装调用
1.先定义一些键,可以随便定义,比如
static NSString *kUserNameKey = @"test-key1";
2.取数据的方法,比如取字符串
NSString *userName = [[[NSUserDefaults standardUserDefaults] stringForKey:kUserNameKey] retain];
如果未定义,则为nil
获取的方法有以下一些
- (NSString *)stringForKey:(NSString *)defaultName; - (NSArray *)arrayForKey:(NSString *)defaultName; - (NSDictionary *)dictionaryForKey:(NSString *)defaultName; - (NSData *)dataForKey:(NSString *)defaultName; - (NSArray *)stringArrayForKey:(NSString *)defaultName; - (NSInteger)integerForKey:(NSString *)defaultName; - (float)floatForKey:(NSString *)defaultName; - (double)doubleForKey:(NSString *)defaultName; - (BOOL)boolForKey:(NSString *)defaultName; - (NSURL *)URLForKey:(NSString *)defaultName;
还提供了一个取任意对象的方法
- (id)objectForKey:(NSString *)defaultName;
3.保存数据的方法,比如保存int类型的数
[[NSUserDefaults standardUserDefaults] setInteger:10 forKey:kMaxCountKey]; [[NSUserDefaults standardUserDefaults] synchronize]; //表示同步保存
其中键kMaxCountKey,可以随便定义
保存的其他方法如下:
- (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:(NSURL *)url forKey:(NSString *)defaultName NS_AVAILABLE(10_6, 4_0);
还提供了保存设置任意对象的方法
- (void)setObject:(id)value forKey:(NSString *)defaultName;
或者批量设置键值对数据
- (void)registerDefaults:(NSDictionary *)registrationDictionary;
4.删除某个数据的方法
- (void)removeObjectForKey:(NSString *)defaultName;
5.默认用户
[NSUserDefaults standardUserDefaults]
standardUserDefaults类方法用来访问默认用户
也可以用下面的方法来初始化一个指定用户名称的偏好,比如
- (id)initWithUser:(NSString *)username;
重置默认用户的方法
+ (void)resetStandardUserDefaults;