zoukankan      html  css  js  c++  java
  • NSUserDefaults standardUserDefaults

    + ( NSUserDefaults * ) standardUserDefaults
    返回值
    共享对象的默认值。

    讨论
    如果共享对象的默认值尚不存在,它与包含以下的域的名称搜索列表中创建,顺序如下:

    NSArgumentDomain ,包括默认的应用程序的参数的解析
    确定应用程序的包标识符域
    NSGlobalDomain ,由违约意味着所有应用程序可见的
    单独的域为每个用户的首选语言
    NSRegistrationDomain ,一组临时默认的值可以由应用程序进行设置,以确保搜索将总是成功

    默认值是当前用户初始化。后续修改标准的搜索列表保持有效,即使在调用此方法再次,搜索列表是保证标准仅在第一次调用此方法。

    // 这3行代码 的作用 是从持久化中移除已经存储的用户数据
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults removeObjectForKey:@"username"];
        [defaults removeObjectForKey:@"password"];

    初始化的时候如果改文件还没有创建的话,如果共享对象的默认值尚不存在,它与包含以下的域的名称搜索列表中创建,注意此点即可.另外探索一下NSUserDefaults这个类的用法

    本地存储数据简单的说有三种方式:数据库、NSUserDefaults和文件。
    NSUserDefaults用于存储数据量小的数据,例如用户配置。
    并不是所有的东西都能往里放的,只支持:NSString,NSNumber, NSDate, NSArray, NSDictionary,详细方法可以查看类文件。
    NSUserDefaultsstandardUserDefaults用来记录一下永久保留的数据非常方便,不需要读写文件,而是保留到一个NSDictionary字典里,由系统保存到文件里,系统会保存到该应用下的/Library/Preferences/gongcheng.plist文件中。需要注意的是如果程序意外退出,NSUserDefaultsstandardUserDefaults数据不会被系统写入到该文件


    如果把一个自定义的类存到一个NSArray里,然后再存到NSUserDefaults里也是不能成功的。不信可以试试,如果你成功的请告诉我。

    那怎么办呢?

     

    我找到的方法是,让这个自定义类实现<NSCoding>协议中的- (id) initWithCoder: (NSCoder *)coder方法和- (void) encodeWithCoder: (NSCoder *)coder方法(obj-c的协议protocol就是java的接口interface,就是C++的纯虚函数),然后把该自定义的类对象编码到NSData中,再从NSUserDefaults中进行读取。


  • 相关阅读:
    bit、byte、word的区别
    JavaScript
    品牌的意义
    Java开发
    Java:关于implements Serializable的警告问题
    文件路径:/和的区别
    Iterator
    parameter和argument的区别
    Java中private、protected、public和default的区别
    Java异常
  • 原文地址:https://www.cnblogs.com/xukunhenwuliao/p/3576239.html
Copyright © 2011-2022 走看看