美文网首页
iOS数据化持久-NSUserDefault

iOS数据化持久-NSUserDefault

作者: 陌上北辰 | 来源:发表于2016-11-18 13:05 被阅读328次

    对知识点的进一步加强,同时也能对新入门iOS的童鞋们有点帮助。 

    一.NSUserDefault

    1.原理:NsUserDefault是用户轻量级的数据持久化,主要用于保存用户程序的配置等信息,以便下次启动程序后能恢复上次的设置。因为是写到了硬盘上,所以会出现用多了会造成系统浪费,内存占用过大等问题。

    (1)、该数据实际上是以“键值对”形式保存的(类似于NSDictionary),因此我们需要通过key来读取或者保存数据(value)。

    (2)、NSUserDefaults类提供了非常方便的方法来获取常用的类型,例如floats,doubles,intergers,Booleans,URLs。所以这也就是说我们可以存储NSData,NSString,NSNUmber,NSDate,NSArray,NSDictionary(目前有五种类型)这些实例。如果你想存储其他类型的对象,你要将其归档并创建一个NSData来实现存储。

    (3)、从NSUserDefaults返回的值是不可改变的,即便是你在存储的时候使用的是可变的值。例如你使用mutable string做为“MyStringDefault”的值,当你做使用stringForKey:方法获取的值,这个值仍然是不可变的。

    (4)、NSUserDefaults是单例,同时也是线程安全的

    2为什么要选用NSUserDefault?

    (1).NSUserDefaults只是一个很小的plist文件,适合存储轻量级的本地数据,不适宜存储大量数据,一般用来保存用户信息,偏好设置等小量数据.

    (2).NSUserDefaults支持的数据格式有限,只支持简单地数据格式,具体有 NSNumber(Integer、Float、Double),NSString,NSDate,NSArray,NSDictionary,BOOL等常见类型,复杂对象就不能用它了.

    (3).NSUserDefualts设计为单例模式,所以具有拿来即用的优点.  NSUserDefaults *userDefaults=[NSUserDefaults standardUserDefaults];

    3.NSUserDefault 存储在什么地方?如何删除?

    NSUserDefault存储在沙盒目录:

    NSArray*paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

    NSString*path = [pathsobjectAtIndex:0];

    NSLog(@"%@",path);

    我这里获取的路径:

    /Users/XXXX/Library/Developer/CoreSimulator/Devices/D2122BB0-3E08-4475-B5B4-9122EE865864/data/Containers/Data/Application/5C3554DF-9902-4115-BE10-DB3C8F826E43/Documents

    用这个去前往文件夹 可直接到沙盒目录,而我们的NSUserDefault是在Library/Preferences/xxxx.plist

    删除NSUserDefault 数据有两种方法:

    1.在代码中获取到单例对象后remove

    NSUserDefaults*defaults = [NSUserDefaultsstandardUserDefaults];

    [defaultsremoveObjectForKey:@"xx"];

    2.直接在沙盒中删除plist文件

    demo:“https://github.com/wasterd/NSUserDefaultDemo/tree/master”

    相关文章

      网友评论

          本文标题:iOS数据化持久-NSUserDefault

          本文链接:https://www.haomeiwen.com/subject/ojbjpttx.html