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. css布局知识点汇总

    昨天早上看到了一篇很棒的文章,这篇文章将布局的一些知识点整理的很不错.我也想整理一下,这样在以后的项目中可以活学活用,避免只用一种方式. 参考文章:https://segmentfault.com/a ...

  2. 微信小程序入门文档

    一 基本介绍 微信专门为小程序开发了一个ide叫做微信开发者工具 最新一版的微信开发者工具,把微信公众号的调试开发工作也集成了进去,可以更换开发模式. https://mp.weixin.qq.com ...

  3. ICPC-无限路之城(数学+思维)

    链接:https://ac.nowcoder.com/acm/contest/321/C 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言2621 ...

  4. 解读 iostat -mxd 1

    #### for AWR 报告 : 建议如下: 不能随便调整db_file_multiblock_read_count 值, 取同样时间段的AWR 报告 02:00 ~ 05:00,所以db_file ...

  5. (转)useradd用户,组管理案例

    原文:https://www.cnblogs.com/Csir/p/6403830.html?utm_source=itdadao&utm_medium=referral 示例:要求oldbo ...

  6. 算法导论课后习题解答 第一部分 练习1.1-1->1.1-5

    很高兴能和大家一起共同学习算法导论这本书.笔者将在业余时间把算法导论后面的题解以博文的形式展现出来希望能得到大家的支持谢谢.如果有可能我会做一些教学视频免费的供大家观看. 练习题选自算法导论中文第三版 ...

  7. wpf ComboBox的SelectionBoxItem相关依赖属性

    以前没有注意SelectionBoxItem相关依赖属性,这几天看wpf源码 特意研究了一番 <Style x:Key="ComboBoxStyle1" TargetType ...

  8. Spring MVC 示例

    Srping MVC项目结构如下: 一.首先创建一个Dynamic Web Project 二.WebContent/WEB-INF/文件夹下新增 web.xml,配置servlet 容器对于web. ...

  9. Java基础:(七)反射

    一.什么是反射 理解反射之前,先要搞懂一件事情,类加载到底是怎么一回事? 类加载相当于Class对象的加载.每个类都有一个Class对象,包含了与类有关的信息.当编译一个新类时,会产生一个同名的.cl ...

  10. ThreadLocal(关于struts2的ThreadLocal,实际上Jdk1.2就有了)

    ThreadLocal是通过在不同线程中操作变量的副本,来达到线程安全的目的,是用空间资源换时间资源的方式.今天在看struts2源码的时候,发现ActionContext中,就持有一个静态的Thre ...