第12课: Application Settings and User Defaults
ios中,在应用程序之外,提供集中的地方,来修改用户的偏好设置,并且序列化到文件。
创建项目
1.utility application模板
一个storyboard
一个主视图mainviewcontroller
一个辅助设置flipviewcontroller
使用设置捆绑包
当setting应用程序启动时,它会检查每个应用程序的设置捆绑包,并为包含设置捆绑包的每个应用程序添加设置组。
在项目中添加设置捆绑包
1. 新建文件 -> resource -> setting bundles
2. 展开settings.bundles,设置属性列表文件Root.plist
要点:
1) 在NSDictionary中,可以使用大多数对象作为键,
但是在属性列表Dictionary节点中,键必须为字符串类型,但是值可以为任何其他属性列表类型。
属性列表类型有: NSDictionary, NSArray, NSData, NSDate, NSBoolen, NSString, NSNumber
(control+右键,选择 show row keys/values选项,可切换到显示 真实的键值名称)
2)键为@"PreferenceSpecifiers",值为Array
Array中,又存储着一系列Dictionary, 每个都对应设置的一个条目
类型可为:Group(分组),Multi Value(多值选择),Slider(滑动块),Text Field(文本输入),Title, Toggle Switch(开关)
3)从一个分组开始,到另外一个分组之间的所有条目,都在此分组中。
4)如果要在应用程序捆绑包中使用图标,则需要把png给拷贝进捆绑包中。
因为设置捆绑包属于settings应用程序的一部分,settings应用程序不能访问本app的沙盒。
5)属性列表编辑器的使用注意:
如果选中某行,return
1.如果展开了,则将会在第一的位置插入子节点
2.如果没展开,则会在后面创建同级节点
3.支持复制粘贴
6)添加应用程序图标
AppSetting Target -》Summary -》找到应用程序图标的配置部分,拖入png文件即可。
7)添加子视图
类型:PSChildPaneSpecfier
链接到另外一个plist文件
创建More.plist的方法,复制Root.plist,重命名,修改
不能再xcode中,为应用程序捆绑包添加新文件,而且属性文件编辑器的save也不支持新文件保存到设置捆绑包中
所以,唯一的方法,是新建文件,另存到某个地方,然后通过finder拖入设置捆绑包中。
通过按一定格式编辑好Root.plist文件,可以在settings应用程序中,实现既定的编辑界面。
读取应用程序中的设置
在应用程序中修改默认设置
NSUserDefaults类提供了非常方便的方法来获取常用的类型,例如floats,doubles,intergers,Booleans,URLs。
所以一个NSUserDefaults的对象必须是属性表,这也就是说我们可以存储NSData,NSString,NSNUmber,NSDate,NSArray,NSDictionary这些实例。
如果你想存储其他类型的对象,你要将其归档并创建一个NSData来实现存储。
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
//存储时,除NSNumber类型使用对应的类型以外,其他的都是使用setObject:forKey:
[userDefaults setInteger:myInteger forKey:@"myInteger"];
[userDefaults setFloat:myFloat forKey:@"myFloat"];
[userDefaults setDouble:myDouble forKey:@"myDouble"];
[userDefaults setObject: myString forKey:@"myString"];
你可能会问一个问题:
NSUserDefautls将数据存储在什么地方了???我都没有显示的指定路径???
用NSUserDefaults存储的数据下次程序运行的时候依然存在,它把数据存储在什么地方了?如何能够清除?
这个下面有/Library/Prefereces,里面有个plist文件,存储的就是你的userDefaults
想要删掉的话,用removeObjectForKey或者删掉沙盒,也就是你的应用程序然后重新安装。
注意,设置被修改后,注意及时同步存储
注册默认值
使设置实时有效
应用从后台到唤醒后,重写获取,刷新用户设置
通知,通知中心
UIApplicationWillEnterForegroundNotification
关于通知中心机制,通知的订阅与取消,响应,需要在另外个专题中详细研究。
总结:
1.重点在“设置捆绑包”的创建和编辑Root.plist文件
command+N -> resource -》 settings bundle
2.通过编辑好的“设置捆绑绑”,settings应用可以读取plist文件,并生成既定的用户界面
3.在自己的app中,读取和设置用户设置,采用NSUserDefaults这个单例类
[NSUserDefaults standardUserDefaults]
objectForKey:
setObject: forKey:
在修改后,记得及时将修改同步到本地存储
synchronize
4.记得在app委托中,注册默认设置,采用方法
registerDefaults
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。