iOS中的数据存储方式_Preference(NSUserDefaults)
NSUserDefaults适合存储轻量级的本地数据,项目中,我会把一些简单的数据密码、网址、登陆状态BOOL、整型/浮点型数据等和用户有关的数据用它存储。但是它不能存储自定义的对象!
实例化一个 NSUserDefaults 对象:
/**
* @brief 创建app整个生命周期内的唯一示例对象
*
*/
+ (NSUserDefaults *)standardUserDefaults; /**
* @brief 释放之前的 NSUserDefaults 对象且置为 nil。而且之前设置的 KVO 全部不在存在。
*/
+ (void)resetStandardUserDefaults;
获取Value值:
/**
根据指定的key值获取字符串 等同于 - (nullable id)objectForKey:(NSString *)anAttribute; (它会把 NSNumber转为 NSString)
*/
- (nullable NSString *)stringForKey:(NSString *)defaultName; /// -arrayForKey: is equivalent to -objectForKey:, except that it will return nil if the value is not an NSArray. /**
根据key值获取数组(等同于 - (nullable id)objectForKey:(NSString *)anAttribute;)
*/
- (nullable NSArray *)arrayForKey:(NSString *)defaultName; /**
根据key值获取字典(等同于 - (nullable id)objectForKey:(NSString *)anAttribute;)
*/
- (nullable NSDictionary<NSString *, id> *)dictionaryForKey:(NSString *)defaultName;
- (nullable NSData *)dataForKey:(NSString *)defaultName;
- (nullable NSArray<NSString *> *)stringArrayForKey:(NSString *)defaultName; /**
根据key值获取整型(等同于 - (nullable id)objectForKey:(NSString *)anAttribute;)
如果 value 是 NSNumber 类型,它自动把 value 转为 NSInteger 返回;
如果 value 是 NSString 类型,它可能把 value 转为 NSInteger 返回;
如果 value 是 bool 类型, 它会转换(YES转为1;NO转为0)返回;
如果 value 不存在或不能被转换成一个整数,它会返回0。
*/
- (NSInteger)integerForKey:(NSString *)defaultName; /**
只会返回 float 值,且内部不会做任何转换(若 value 为 bool,内部不会转换)
*/
- (float)floatForKey:(NSString *)defaultName; /**
只会返回double值,且内部不会做任何转换(若value为boolean,也不会转换)
*/
- (double)doubleForKey:(NSString *)defaultName; /*!
-boolForKey: is equivalent to -objectForKey:, except that it converts the returned value to a BOOL. If the value is an NSNumber, NO will be returned if the value is 0, YES otherwise. If the value is an NSString, values of "YES" or "1" will return YES, and values of "NO", "0", or any other string will return NO. If the value is absent or can't be converted to a BOOL, NO will be returned. */ /**
根据key值获取bool值(等同于 - (nullable id)objectForKey:(NSString *)anAttribute;)
如果 value 是 NSNumber 类型 或 value 为 0,返回NO
如果 value 是 NSString类型的“YES”“1”,返回NO;其他任何字符串将返回NO;
如果 value 不存在或不能被转换成一个整数,它会返回NO。
*/
- (BOOL)boolForKey:(NSString *)defaultName; /**
根据key值获取NSURL(等同于 - (nullable id)objectForKey:(NSString *)anAttribute;)
如果 value 是字符串路径,将会被构建为 URL路径;
如果 value 是被归档的 URL 它将被反归档;
如果 value 不存在或不能被转换成一个整数,它会返回 nil。
*/
- (nullable NSURL *)URLForKey:(NSString *)defaultName;
设置(存储)Value:
- (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;
删除key对应的值:
- (void)removeObjectForKey:(KeyType)aKey;
NSUserDefaults的值改变的通知:
FOUNDATION_EXPORT NSString * const NSUserDefaultsDidChangeNotification;
不会具体指导哪个key-value值改变了。
只要我们操作了NSUserDefaults,必须进行数据的同步,否则我们无法获取最新的数值:
- (BOOL)synchronize;
参考文档:
NSUserDefaults Class Reference
iOS中的数据存储方式_Preference(NSUserDefaults)的更多相关文章
- ios中常见数据存储方式以及SQLite常用的语句
在iOS中,根据不同的需求对应的有多种数据存储方式: 1.NSUserdefaults 将数据存储到沙盒中(library),方便易用,但是只能存储系统提供的数据类型(plist),不能存储自定义的 ...
- IOS中的数据存储方式,特点,使用情况
数据存储的核心都是写文件,主要有四种持久化方式:属性列表(Plist),对象序列化,SQLite数据库,CoreData. 存储Plist: 键值进行存储,不能存储对象.对象需要序列化编码才能写入文件 ...
- iOS中的数据存储方式_SQLite3
优点: 1) SQLite是一款轻型的嵌入式数据库; 2) 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 3) 它的处理速度比Mysql.PostgreSQL这两款著名的数据库都还 ...
- iOS中的数据存储方式_Plist
plist文件只能存储OC常用数据类型(NSString.NSDictionary.NSArray.NSData.NSNumber等类型)而不能直接存储自定义模型对象; 我们拿NSData举例: /* ...
- iOS中的数据持久化方式
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
- 怎样实现IOS开发中的数据存储方式
iOS 开发中,一般有如下几种数据存储方式.需要根据具体的业务场景,选择 合适的数据存储方式. (1) 用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video 播放记录,或者 Ap ...
- 安卓中的数据存储方式以及ContentProvider的简单介绍
1.介绍android的数据存储方式 File存储 sharedPrefrence存储方式 conmtentprovider sqlitedatabase 网络存储 2.请介绍下ContentPr ...
- iOS中的数据存储
SQLite3 SQLite3是一款开源的嵌入式关系型数据库,可移植性好,易使用,内存开销小. SQLite3是无类型的,意味着你可以保存任何类型的数据到任意表的任意字段中. SQLite3常用的4种 ...
- iOS开发_数据存储方式
对于数据持久化的问题,博主并不准备在博文内放很多的代码进行更深一步解释,只是简单的介绍一下四种数据持久化,如有时间,会另外针对各个数据持久化的方法进行更进一步的阐述. 直接进入主题: 〈1.NSUse ...
随机推荐
- 程序员除了会CRUD之外,还应该知道什么叫CQRS!
今天主要跟大家分享一下什么是 CQRS,以及在项目中如何去使用. CRUD系统 我们平常最熟悉的就是三层架构,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体.然后通过业 ...
- SpringMVC入门 bug集锦X2
package cn.itcast.converter; import org.springframework.core.convert.converter.Converter; import jav ...
- 黑马学习SpringMVC 基本开发步骤
- mysql错误之errorcode 1215问题
1.此类问题出现时我们往往会迫不及待的去百度,但是问题偶尔也不是我们想的那样,比如我本次犯下的错误如下: 上图是我给表添加外键约束的时候的sql.下图是我建的表,问题出哪里了?原来是我的数据库根本没有 ...
- 关于Nginx对于PHP支持的问题
因为使用的mediawiki是用php写的,所以就遇上了一个问题,怎么让Nginx支持php,记得当时使用apache2的时候是安装了一个叫 “ libapache2-mod-php5 ”的mod , ...
- js页面可视区域懒加载
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 记一次NegativeArraySizeException
问题描述:服务器接收后台返回的报文时,提示java.lang.NegativeArraySizeException 分析:这种异常返回的原因,一般情况下没有报文提示为返回空报文,初步分析是响应报文流长 ...
- Myeclipse发布第一个jsp页面及web project部署到tomcat上的几种方法
菜鸟日记: 1:new web project: 2:fix the visiting path of the tomcat,打开在安装目录下conf目录中的server.xml,在</Hos ...
- 高效的设计可视化UI
http://www.uimaker.com/uimakerdown/uitutorial/35990.html http://maqetta.org/downloads/ .Data.js Data ...
- ABAP数据类型
数据类型表: 类型缩写 类型 默认长度 允许长度 初始值 描述 C 文本型 1 Space 字符串数据,如'Program' D 日期型 8 8 '00000000' 日期数据,格式为YYYYMM ...