持久化数据--NSUserDefaults、Setting Application

一.如何设置和获取数据

                NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
                NSNumber *defaultCalibrationOffset = [NSNumber numberWithFloat:2.0];
                //程序注册数据
                NSDictionary *resourceDict = [NSDictionary dictionaryWithObject:defaultCalibrationOffset forKey:@"BubbleLevelCalibrationOffsetKey"];
		[defaults registerDefaults:resourceDict];
                //从程序注册的数据中获取数据
                NSNumber *s2 = [defaults objectForKey:@"BubbleLevelCalibrationOffsetKey"];
                NSLog(@"%@",s2);
                //从Setting Application中获取数据
                BOOL s = [defaults boolForKey:@"play_sounds_preference"];
                NSLog(@"%@",[NSNumber numberWithBool:s]);

二.Setting设置

1.创建Setting.bundle

创建关联的plist需要注意的是自己在Finder将Setting.bundle右键,显示包内容,然后自己将Sound.plist拖进去

所有主文件都是Root.plist,详细如下:


Sound.plist


ChildPane就是一个外联的资源,只要名字对应就行了,此外尽量勾选Raw Keys/Values选项,因为这样显示出的参数才比较详尽,否则会出现混淆,比如Key就会对应Identifier,这个就比较晕了,其实所有资源在程序里对应的key,就是在item里定义的Key

注意打勾


三.setting修改完毕后通知程序

有2种通知可以触发回调程序

1.NSUserDefaultsDidChangeNotification

绑定事件

        [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(notifys:) name:NSUserDefaultsDidChangeNotification object:nil];
触发方法

- (void)notifys:(NSNotification *)notification {  
        NSLog(@"%@",notification);
}
该方法只有用户在相对应setting界面修改了数值,才会触发,如果什么都没有修改是不会触发该通知的

2.UIApplicationWillEnterForegroundNotification

绑定事件

        [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(applicationWillEnterForegrounds:) name:UIApplicationWillEnterForegroundNotification object:nil];
触发方法

- (void)applicationWillEnterForegrounds:(NSNotification *)notification {  
        NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
        //强制保存数据
        [defaults synchronize];
        //数据重新获取,并且重新调整界面
        //⋯⋯
}
ps:值得一提的是-(void)synchronize方法可以强制将本次NSUserDefaults数据持久化保存,虽然这个操作相对比较消耗时间,但是对于每次用户操作后保存还是能够接受的。

参考文档

Setting Application Schema Reference

Preferences and Setting Programming Guide


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值