原创Blog,转载请注明
blog.csdn.net/hello_hwc
前言:iOS的数据持久化存储分为很多种
- 普通文件,plist
- NSUserDefaults
- CoreData
- KeyChain
本文讲解NSUserDefaults的使用
StandardUserDefaults
大部分的时候使用StandardUserDefaults来保存数据,这是一个共享的UserDefaults,意味着在程序的任意一个地方访问到的都是同一个UserDefaults
写数据
swift代码
var userdefaults = NSUserDefaults.standardUserDefaults()
userdefaults.setBool(true, forKey: "KEYBOOL")
userdefaults.setObject("String", forKey: "KSTRING")
注意,上面的代码写入的数据,并不会立刻同步到文件里,而是保存在cache中,这样做提升速率(文件IO的效率很低)。如果要立刻同步
userdefaults.synchronize()
如果不是非常有必要同步到数据库里,建议不要每次写入都调用同步方法,因为相对来说,它实在是很慢。
读出数据
var str = userdefaults.objectForKey("KSTRING") as? String
var bool = userdefaults.boolForKey("KEYBOOL")
为app group服务的UserDefaults
这样的UserDefaults是共享的,在以下两种情况下使用
- app suite,也就是说两个app之间需要共享数据
- app extension,在extension和他的contain app之间共享数据。典型的是输入法程序,在contain app里设置以后,键盘的样式就会改变。
如何使用-以extension为例
在contain app写入数据
OC代码
NSUserDefaults *shared = [[NSUserDefaults alloc]initWithSuiteName:@"group.yourcompanyname.yourappname"];
[shared setObject:your dic forKey:@"KDICFORWIDGET"];
[shared setObject:@"1234" forKey:@"KSTRINGFORWIDGET"];
[shared synchronize];
在extension读数据
NSUserDefaults *shared = [[NSUserDefaults alloc]initWithSuiteName:@"group.yourcompanyname.yourappname"];
NSMutableDictionary *dic = [shared objectForKey:@"KDICFORWIDGET"];
NSString *str = [shared objectForKey:@"KSTRINGFORWIDGET"]
时间: 2024-10-14 09:54:59