应用设置

Settings.bundle

效果

开发中如果需要让用户自行设置一些系统的配置项目,比如
iShot2021-04-28 20.20.37.png
可以在Settings.bundle进行配置

设置

  • 新建 Settins.bundle

iShot2021-04-28 20.48.56.png

  • 修改 Root.plist

iShot2021-04-28 20.51.54.png

Group 类似于UITableView中的Group分组,用来表示一组设置项,配置如下所示:

    (1)Title:表示分组的显示标题

    (2)Type:默认是Group

    (3)FooterText:Group的底部显示的文字内容

Title 普通项
    (1)Type:默认是Title

    (2)Title:配置项显示的标题

    (3)Identifier:设置项的标识符,用于读取配置项的配置内容

    (4)Default Value:默认的值

Simulator Screen Shot - iPhone 8 Plus - 2021-04-28 at 20.56.51.png

获取

在程序中可以获取

- (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

  1. NSUserDefaults是一个单例对象,通过[NSUserDefaults standardUserDefaults]获取.作用简单来说是以键值对的方式将数据在沙盒中实现存取操作.

  2. 当使用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"]);

复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享