美文网首页
NSUserDefault

NSUserDefault

作者: C_HPY | 来源:发表于2016-11-16 15:46 被阅读50次

代码段一

NSDictionary *defaultValues = [NSDictionary dictionaryWithObjectsAndKeys:@"jim",@"name", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
NSString *name = [[NSUserDefaults standardUserDefaults] valueForKey:@"name"];
NSLog(@"%@\n",name);

此时打印结果:Jim

代码段二

[[NSUserDefaults standardUserDefaults] setValue:@"lucy" forKey:@"name"];
NSString *newName = [[NSUserDefaults standardUserDefaults] valueForKey:@"name"];
NSLog(@"%@\n",newName);

此时打印结果:lucy
注释代码段二,重新执行代码段一,发现打印结果仍旧是lucy,而并非是jim,原因是:registerDefaults:方法调用时会check NSUserDefaults里是否已经存在了相同的key,如果有则不会把其覆盖。即重新执行代码段一的时候,userDefault检测到已经存在了key值"name",所以[userDefault registerDefaults:defaultValues];
方法并没有覆盖掉key值"name"对应的value值,所以打印结果仍旧是lucy
执行下面代码:

NSDictionary*defaultValues = [NSDictionarydictionaryWithObjectsAndKeys:@"wuhaiwei",@"name", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
NSString *name =[[NSUserDefaults standardUserDefaults] valueForKey:@"name"];
NSLog(@"%@\n",name);

打印结果仍旧是lucy,更加印证了上面的结论。

之前认为执行下面方法
[[NSUserDefaults standardUserDefaults] synchronize];
就一定会保存成功,但是最近发现,执行该方法后立刻执行commond+R数据可能会保存不成功。

使用registerDefaults:方法修改webView的UserAgent

UIWebView *webView = [[UIWebView alloc] init];
NSString *TERMINAL = @"HJHZAPP";
NSString *oldAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
NSRange range = [oldAgent rangeOfString:TERMINAL];
if (range.length <= 0) {
    NSString *str = [HJUserAgent userAgent];
    NSString *newAgent = [NSString stringWithFormat:@"%@ %@", oldAgent, str];
    NSDictionary *dictionnary = @{@"UserAgent":newAgent};
    [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
}

相关文章

  • NSUserDefault

    代码段一 此时打印结果:Jim 代码段二 此时打印结果:lucy注释代码段二,重新执行代码段一,发现打印结果仍旧是...

  • NSUserDefault

    存:[[NSUserDefaults standardUserDefaults] setObject:UIImag...

  • NSUserDefault

    NSUserDefaults 使用 NSUserDefaults是什么,有什么用处 对于应用来说,每个用户都有自己...

  • NSUserDefault

    1.NSUserDefaults可以直接存储的类型 2.使用 NSUserDefaults 存储自定义对象 参考链...

  • NSUserDefault

    NSUserDefaults * settings = [NSUserDefaults standardUserD...

  • NSUserDefault

    简介 它是单例的,并且是线程安全的,是以键值对的形式保存在沙盒中,最下面还是用plist文件进行保存。支持存储的数...

  • iOS NSUserDefaults 存储(二)

    单个删除NSUserDefault保存的数据 删除NSUserDefault保存的所有数据 我们先要取到plist...

  • iOS配置设置NSUserDefaults--文件管理三

    1、NSUserDefault的使用: 作用:NSUserDefault类提供了一个与默认系统进行交互的编程接口。...

  • 多种持久化方案分析

    NSUserDefault 一般来说,小规模数据,弱业务相关数据,都可以放到NSUserDefault里面,内容比...

  • iOS基础--用户默认设置(NSUserDefaults),文件

    NSUserDefault: NSUserDefault : 是一个单例, 在整个程序中只有一个实例对象,它可以用...

网友评论

      本文标题:NSUserDefault

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