2010-03-27 14 views
1

Est-il possible de limiter un nombre entier dans NSUserDefaults? Bien sûr, vous pouvez le limiter dans votre application, mais je pense à la TextFields dans les paramètres.NSUserDefaults limite l'entier?

Serait génial d'obtenir quelques conseils.

Merci beaucoup.

+0

Que voulez-vous dire par "limiter un entier"? Voulez-vous dire restreindre sa taille de sorte qu'il ne s'affiche pas à beaucoup de caractères lorsqu'il est rendu en tant que chaîne? Utilisez-vous un ensemble de paramètres? – TechZen

+0

Je veux dire un minimum et un maximum par exemple. le minimum est de 10 et le maximum. est 20. – rdesign

Répondre

0

J'ai écrit une petite superclasse VRAppSettings couvrant ce cas.

Permet de stocker les paramètres de votre application via les propriétés d'un objet, puis d'archiver automatiquement cet objet par défaut.

Voici comment cela peut être fait. Faire un successeur de la classe 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 

Ensuite MySettings peut être utilisé comme singleton, voici comment:

[MySettings sharedInstance].myInt = 99; 
[[MySettings sharedInstance] synchronizeToUserDefaults]; 

NSLog(@"myInt = %d", [MySettings sharedInstance].myInt); 

Dans le code ci-dessus les valeurs transmises à myInt seront vérifiés dans le setter et toujours - setMyInt être compris entre 80 et 110. MySettings singleton sera stocké dans les valeurs par défaut de l'utilisateur. Pour plus de détails, voir aussi blog record