这个超类使得处理用户的偏好设置(应用的设置)更为容易。主要适用于iOS。
➡️ 对于Swift,请使用PersistentStorageSerializable pod。
这个类的一个后续版本将应用设置保留在属性中,并在默认系统中存储自己。尽管设置值无法通过NSUserDefaults类直接访问,但只能通过VRAppSettings
后续类的setter和getter。
这为应用设置定义提供了通用场所。在setter和getter中对设置值进行范围和一致性检查的可能性。可以使用重构工具在项目中对设置名称进行更改。
VRAppSettings
类通常用作单例。为VRAppSettings
类创建自己的后代,例如MySettings
。尽管如此,您将能够使用继承的+sharedInstance
和-synchronizeToUserDefaults
方法。将所有应用设置描述为MySettings
类的属性,并重写必需的方法。您将获得类似以下的内容:
@interface MySettings : VRAppSettings
@property (nonatomic, readwrite) BOOL dontDimScreen;
@property (nonatomic, readwrite) float soundLevel;
@end
@implementation MySettings
- (NSString *)userDefaultsKeyPostfix
{
return @"MyAppsSettings";
}
- (void)resetToDeveloperDefaults
{
// This will be called from -init of the superclass.
self.dontDimScreen = NO;
self.soundLevel = 0.7;
}
- (void)checkAfterInitWithCoder
{
// This will be called from -initWithCoder: of the superclass.
}
@end
现在如何保存应用设置
[MySettings sharedInstance].dontDimScreen = YES;
[MySettings sharedInstance].soundLevel = 0.85;
[[MySettings sharedInstance] synchronizeToUserDefaults];
每次想将设置对象写入用户默认设置时,您都必须手动调用-synchronizeToUserDefaults
。
这就是加载应用设置的方式
BOOL dontDim = [MySettings sharedInstance].dontDimScreen;
float soundLevel = [MySettings sharedInstance].soundLevel;
通过VRAppSettings类在默认系统中保留应用设置的好处
-setType:forKey:
或-typeForKey:
方法,只需编写或读取属性!请参阅类定义和包含在仓库中的VRAppSettingsExample项目。
后继类属性必须是原始类型或对象类型,并符合NSCoding协议。
以const
开头的属性将在保存或加载过程中被排除。在这些被排除的属性中,您可以存储在保留属性中依赖的运行时值。
iOS SDK 6.0+
此类需要来自VRFoundationToolkit库的几个实用工具。
使用cocoapods更快,因为这个库有两层依赖,但如果您愿意,也可以手动设置。
使用以下命令将 VRAppSettings
仓库子树添加到您的项目目录的 Requirements
子目录中
git subtree add --prefix=Requirements/VRAppSettings --squash https://github.com/IvanRublev/VRAppSettings.git master
将 VRAppSettings.h
和 VRAppSettings.m
文件拖放到您的Xcode项目中。
现在就可以使用了!
此类需要ARC。
如果您打算在一个尚未使用自动引用计数(ARC)的项目中使用此类,您需要在项目的“构建设置”标签下的“编译源”部分中将 NSObject+VRPropertiesProcessing.m
和 VRAppSettings.m
文件的编译器标志设为 -fobjc-arc
。
MIT. 版权归 Ivan Rublev 所有 (c) 2013, [email protected]