美文网首页
NSUserDefaults中setValue:forKey和s

NSUserDefaults中setValue:forKey和s

作者: 一抹相思泪成雨 | 来源:发表于2020-11-08 14:12 被阅读0次

1.NSUserDefaults 的常见使用

1.轻量级的数据存储,通过UserDefaults进行存储
2.沙盒数据共享,app 使用了iOS 8 以后的程序拓展Extention,我们也可以使用它和宿主App进行数据共享(如,用户信息)

initWithSuiteName:  // 通过设置AppGroups

[[NSUserDefaults alloc] initWithSuiteName:@"group.com.xx.xx"];

2.NSUserDefaults 的setValue:forKey/valueForKey:

NSKeyValueCoding(键值编码)是一种协议,简称(KVC),对象采用这种机制来对其属性的间接访问,NSObject对象都可以访问对象的属性。
1.setValue:forKey/valueForKey:
调用时setValue: 可以设置nil传入,但setObject:无法这样使用,编译报错
但是当value为nil的时候,会自动调用removeObject:forKey方法
2.key 必须为NSString类型

3.NSUserDefaults 的setObject:forKey/objectForKey:

  1. NSUserDefaults的自身实例方法,移除或添加数据时结合synchronize达到快速写入文件的目的
    2.setObject:forKey
    调用时不能为nil;
    key 必须为NSString类型
    3.移除key值,需要主动调用removeObject:forKey方法

4.总结

1.两种方式都会写到沙盒plist中

    [[NSUserDefaults standardUserDefaults] setValue:@"1111" forKey:@"key1"];
    [[NSUserDefaults standardUserDefaults] setObject:@"2222" forKey:@"key2"];
    [[NSUserDefaults standardUserDefaults] synchronize];

结论:kvc方式可能也调用了UserDefaults 的写数据方法或重写存数据方法

2.两种方法本质不同
1.setObject:forKey/objectForKey:属于自身方法
2.setValue:forKey/valueForKey:属于KVC协议方法,

3.存取方式
1.避免交叉使用,存setValue:forKey方式,而取值是objectForKey: 反之亦然,导致位置错误

参考地址
KVC和KVO:https://www.jianshu.com/p/7a7c2528c6e7
UserDefaults相似方法: https://www.cnblogs.com/ficow/p/7265162.html
setValue:forKey/和 setObject:forKey区别:
https://blog.csdn.net/weixin_33824363/article/details/91958983

相关文章

网友评论

      本文标题:NSUserDefaults中setValue:forKey和s

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