Я написал небольшой VRAppSettings суперкласс, охватывающий этот случай.
Позволяет сохранять настройки вашего приложения через свойства объекта, а затем автоматически архивировать этот объект по умолчанию.
Вот как это можно сделать. Сделать наследником класса VRAppSettings:
@interface MySettings : VRAppSettings
@property (nonatomic, readwrite) NSInteger * myInt;
@end
@implementation MySettings
- (NSString *)userDefaultsKeyPostfix
{
return @"MyAppsSettings";
}
- (void)resetToDeveloperDefaults
{
// Set default values here
self.myInt = 85;
}
- (void)checkAfterInitWithCoder { }
- setMyInt(NSString * myInt)
{
NSInteger max = 110;
NSInteger min = 80;
if (myInt > max) myInt = max;
if (myInt < min) myInt = min;
_myInt = myInt;
}
@end
Тогда MySettings
можно использовать как синглтон, вот как:
[MySettings sharedInstance].myInt = 99;
[[MySettings sharedInstance] synchronizeToUserDefaults];
NSLog(@"myInt = %d", [MySettings sharedInstance].myInt);
В приведенном выше коде значения, передаваемые myInt, будут проверяться в установщике - setMyInt
и всегда будут между 80
и 110
. MySettings
Singleton будет сохранен в пользовательских значениях по умолчанию.
См. Также мою запись в блоге для более подробной информации.