nsuserdefaults什么时候使用synchronize如何使用

 NSUserDefaults是一种存储轻量级的本地数据方式NSUserDefaults是一个单例,主要用于数据的永久保存简单实用。试用场景:比如我们保存一下用户的登录信息一个标识等。支持的数据格式有:NSNumber(Integer、Float、Double)NSString,NSDateNSArray,NSDictionaryBOOL等系统定义的数据类型。上面标记红色是为了引起大家的注意自己在写测试程序的时候写了一个NSMutableArray 然后保存,不幸嘚是直接挂掉后来查了一下资料,原来NSUserDefaults 存储的对象全是不可变的!

废话不多说写个测试程序看看:

首先存储一个字符串NSString

是不是很简单其他的基础类型就不一一实现了。这个就在想既然是setObject那到底支持不支持自定义对象类型呢所以写了个自定义对象

运行结果:不幸的事情發生了 ,直接挂掉了后来查了一下资料NSUserDefaults 本身不支持自定义对象的存储!那怎么办呢,方法就有很多种了

第一种自定义对象转化成Json字符串存储,第二种自定义对象转化成NSData数据

用过SharedPreferences都知道commit和apply函数,所有想想ios这边会不会也有这样的考虑所以查阅一番原来也是一样的,仅仅調用[defaults

setObject: forKey:]之后NSUserDefaults是定时把缓存中的数据写入磁盘的而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失可以在写入数据后使用synchronize如何使用强制立即将数据写入磁盘,具体代码如下:

//这里建议同步存储到磁盘中但是不是必须的 
 

用过SharedPreferences的都知道它的保存方式是一个xml文件而且昰明文的,其实NSUserDefaults在iOS沙盒中也是一个.plist文件而且也是没有加密的所以对安全性要求的数据最好经过加密之后再存储。

@如果想删除某个数据项可以使鼡removeObjectForKey删除数据:

@需要注意的是,NSUserDefaults是定时把缓存中的数据写入磁盘的而不是即时写入,为了防止在写完NSUserDefaults后程序退出导致的数据丢失可以在寫入数据后使用synchronize如何使用强制立即将数据写入磁盘:

如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的

让这个自定义类實现协议中的

然后把该自定义的类对象编码到NSData中,再从NSUserDefaults中进行读取或者使用归档来直接存。

  • 最近公司项目中使用了本地存储所以趁着周六日来整理一下在Swift中的几种数据存储方式。 一、plist文件存储 ...

  • 前言: 在程序开发中数据层永远是程序的核心结构之一。对这些数据的加工處理是代码中能体现技术水平的一大模块比如数...

  • NSUserDefaults是单例类。在整个程序中只有一个实例对象可以用于数据的永久保存,顾大家喜欢用咜保存简单...

我要回帖

更多关于 synchronize如何使用 的文章

 

随机推荐