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 ...
随机推荐
- Nacos深入浅出(六)
其实我们发现在我们本地新生成了文件,这个文件就是nacos; 这个文件怎么那么眼熟,不就是我们的controller中的注解里面的参数value么: @Controller @NacosPropert ...
- JDK自带反编译工具javap
在JDK的bin文件夹下,有许多自带工具: javap就是其中的一个,对应为 javap.exe javap可反编译查看Java编译器编译生成的字节码文件, 语法: javap [ options ] ...
- Visiual Studio CLR20r3问题
原文转自:http://blog.sina.com.cn/s/blog_3f2ef11801013p8c.html(刘帝勇的大观园) 看到有更新,习惯性的点了,升级到Visiual Studio Ul ...
- LOJ 2288「THUWC 2017」大葱的神力
LOJ 2288「THUWC 2017」大葱的神力 Link Solution 比较水的提交答案题了吧 第一个点爆搜 第二个点爆搜+剪枝,我的剪枝就是先算出 \(mx[i]\) 表示选取第 \(i \ ...
- shell中变量内容的删除,替代
删除 ${varname#strMatch} // 在varname中从头匹配strMatch,然后删除从头到第一次匹配到的位置 ${varname##strMatch} // 在varname中从头 ...
- Codeforces 140D(贪心)
要点 跟大家打acm的策略一样,为了做更多的题数肯定做最简单的题目,为了罚时更少肯定从易到难做 虽然有个12:00之限不同于往常比赛,但细想还是要从易到难贪:做这些题的总时间肯定是不变的,只是顺序可变 ...
- Codeforces 161A(贪心)
要点 我在想贪心是对的那要二分图何用,自己的想法是:二分图最开始并不知道怎么匹配最好所以就按输入顺序连了,之后慢慢修改:而这道匹配也成对匹配但从一开始你就可以知道选哪个最划算,就是贪心地选最小的.不必 ...
- NET Core 2.0使用Cookie认证实现SSO单点登录
NET Core 2.0使用Cookie认证实现SSO单点登录 之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sa ...
- Net Core2.0下使用Dapper
Net Core2.0下使用Dapper 今天成功把.Net Framework下使用Dapper进行封装的ORM成功迁移到.Net Core 2.0上,在迁移的过程中也遇到一些很有意思的问题,值得和 ...
- Spark Mllib里的本地矩阵概念、构成(图文详解)
不多说,直接上干货! Local matrix:本地矩阵 数组Array(1,2,3,4,5,6)被重组成一个新的2行3列的矩阵. testMatrix.scala package zhouls.bi ...