NSUserDefaults ограничить целое число? - PullRequest
1 голос
/ 27 марта 2010

Можно ли ограничить целое число в NSUserDefaults? Конечно, вы можете ограничить его в своем приложении, но я думаю о TextFields в настройках.

Было бы здорово получить несколько подсказок.

Большое спасибо.

1 Ответ

0 голосов
/ 30 марта 2014

Я написал небольшой 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 будет сохранен в пользовательских значениях по умолчанию.

См. Также мою запись в блоге для более подробной информации.

...