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)的更多相关文章

  1. ios中常见数据存储方式以及SQLite常用的语句

    在iOS中,根据不同的需求对应的有多种数据存储方式: 1.NSUserdefaults  将数据存储到沙盒中(library),方便易用,但是只能存储系统提供的数据类型(plist),不能存储自定义的 ...

  2. IOS中的数据存储方式,特点,使用情况

    数据存储的核心都是写文件,主要有四种持久化方式:属性列表(Plist),对象序列化,SQLite数据库,CoreData. 存储Plist: 键值进行存储,不能存储对象.对象需要序列化编码才能写入文件 ...

  3. iOS中的数据存储方式_SQLite3

    优点: 1) SQLite是一款轻型的嵌入式数据库; 2) 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 3) 它的处理速度比Mysql.PostgreSQL这两款著名的数据库都还 ...

  4. iOS中的数据存储方式_Plist

    plist文件只能存储OC常用数据类型(NSString.NSDictionary.NSArray.NSData.NSNumber等类型)而不能直接存储自定义模型对象; 我们拿NSData举例: /* ...

  5. iOS中的数据持久化方式

    iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...

  6. 怎样实现IOS开发中的数据存储方式

    iOS 开发中,一般有如下几种数据存储方式.需要根据具体的业务场景,选择 合适的数据存储方式. (1)  用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video 播放记录,或者 Ap ...

  7. 安卓中的数据存储方式以及ContentProvider的简单介绍

    1.介绍android的数据存储方式 File存储 sharedPrefrence存储方式 conmtentprovider sqlitedatabase 网络存储   2.请介绍下ContentPr ...

  8. iOS中的数据存储

    SQLite3 SQLite3是一款开源的嵌入式关系型数据库,可移植性好,易使用,内存开销小. SQLite3是无类型的,意味着你可以保存任何类型的数据到任意表的任意字段中. SQLite3常用的4种 ...

  9. iOS开发_数据存储方式

    对于数据持久化的问题,博主并不准备在博文内放很多的代码进行更深一步解释,只是简单的介绍一下四种数据持久化,如有时间,会另外针对各个数据持久化的方法进行更进一步的阐述. 直接进入主题: 〈1.NSUse ...

随机推荐

  1. 洛谷P4099 [HEOI2013]SAO(树形dp)

    传送门 HEOI的题好珂怕啊(各种意义上) 然后考虑树形dp,以大于为例 设$f[i][j]$表示$i$这个节点在子树中排名第$j$位时的总方案数(因为实际只与相对大小有关,与实际数值无关) 我们考虑 ...

  2. AcDbDictionary of AcDbDatabase

    GroupDictionary MLStyleDictionary LayoutDictionary PlotStyleNameDictionary MaterialDictionary Visual ...

  3. phpstorm使用

    生成注释快捷键/**+enter 注释快捷键ctrl+/

  4. mac 安装cocoapods

    按主command+空格 输入ter 就能看到终端 左键单机(直接点回车键也可以)打开即可 需要先安装ruby环境 安装rvm curl -sSL https://get.rvm.io | bash ...

  5. IOS 打包提示错误(ERROR ITMS-90125: ERROR ITMS-90087: ERROR ITMS-90209:)

    提示这种错误是集成环信造成的,解决方法看环信的官方文档: 集成动态库上传AppStore 由于 iOS 编译的特殊性,为了方便开发者使用,我们将 i386 x86_64 armv7 arm64 几个平 ...

  6. 基于.NetCore2.1。服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务

    基于.NetCore2.1.服务类库采用.Net Standard2.0,兼容.net 4.6.1消息推送服务 https://www.cnblogs.com/ibeisha/p/weixinServ ...

  7. Net Core下通过Proxy 模式

    Net Core下通过Proxy 模式 NET Core下的WCF客户端也是开源的,这次发布.NET Core 2.0,同时也发布了 WCF for .NET Core 2.0.0, 本文介绍在.NE ...

  8. 066 Plus One

    给定一个非负整数组成的非空数组,给整数加一.可以假设整数不包含任何前导零,除了数字0本身.最高位数字存放在列表的首位.详见:https://leetcode.com/problems/plus-one ...

  9. CSS3 - CheakBox 开关效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Jenkins+Gitlab+Ansible自动化部署(四)

    接Jenkins+Gitlab+Ansible自动化部署(三)https://www.cnblogs.com/zd520pyx1314/p/10235394.html Jenkins应用 Jenkin ...