Settings.bundle
效果
开发中如果需要让用户自行设置一些系统的配置项目,比如 可以在Settings.bundle进行配置
设置
-
新建 Settins.bundle
-
修改 Root.plist
Group 类似于UITableView中的Group分组,用来表示一组设置项,配置如下所示:
(1)Title:表示分组的显示标题
(2)Type:默认是Group
(3)FooterText:Group的底部显示的文字内容
Title 普通项 (1)Type:默认是Title
(2)Title:配置项显示的标题
(3)Identifier:设置项的标识符,用于读取配置项的配置内容
(4)Default Value:默认的值
获取
在程序中可以获取
- (void)viewDidLoad {
[super viewDidLoad];
//获取SettingsBundle信息
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSLog(@"%@",[userDefaults objectForKey:@"title_perference"]);
NSLog(@"%@",[userDefaults objectForKey:@"sex_perference"]);
NSLog(@"%@",[userDefaults objectForKey:@"name_preference"]);
NSLog(@"%@",[userDefaults objectForKey:@"enabled_preference"]);
NSLog(@"%@",[userDefaults objectForKey:@"slider_preference"]);
}
注意
运行应用后直接直接通过上面的代码获取信息,会得到null; 因为root.plist实际上只是一个静态文件用来在设置里显示; 只有当你对它进行修改,它才会往NSUserDefaults里添加。 修改配置后,NSUserDefaults的优先级高于root.plist文件。
NSUserDefauls
-
NSUserDefaults是一个单例对象,通过
[NSUserDefaults standardUserDefaults]
获取.作用简单来说是以键值对的方式将数据在沙盒中实现存取操作. -
当使用NSUserDefaults生成的单例对象通过key在沙盒中获取数据时,如果获取不到,则返回null,在某些时刻,就算该key的值不存在,也想返回默认的值,那么就可以使用registerDefaults.
所以,一般将该注册代码写在application:didFinishLaunchingWithOptions中是最合适的
NSDictionary *dict = @{@"name":@"张三"};
// 注册默认值
[[NSUserDefaults standardUserDefaults] registerDefaults:dict];
// 通过key取出值: 张三
NSLog(@"%@",[[NSUserDefaults standardUserDefaults] valueForKey:@"name"]);
// 设置值: 李四
[[NSUserDefaults standardUserDefaults] setObject:@"李四" forKey:@"name"];
// 通过key取出值: 李四
NSLog(@"%@",[[NSUserDefaults standardUserDefaults] valueForKey:@"name"]);
//值移除
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"name"];
//通过key取出值: 张三
NSLog(@"%@",[[NSUserDefaults standardUserDefaults] valueForKey:@"name"]);