2010-04-10 8 views
2

J'ai configuré les valeurs par défaut de l'utilisateur pour enregistrer un entier pour un UISlider, le problème est que, si l'utilisateur vient juste d'installer l'application alors l'entier est zéro ou NULL. Y at-il un moyen de détecter si c'est = NULL avec un entier?IPhone SDK Par défaut NSUserDefaults

Heres mon code i ont jusqu'à présent:

-(void)awakeFromNib { 
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
senset = [prefs integerForKey:@"senset"]; 
senset = sensitivity.value; 
} 
- (IBAction) setSens { 
senset = sensitivity.value; 
} 
- (IBAction) goBackopt { 
{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setInteger:senset forKey:@"senset"]; 
    [prefs synchronize]; 
} 

} 

SenseT est l'entier. J'ai essayé ce code, et il définit à 25 sur la première fois, mais si je tente de l'écraser, il ne fonctionnera pas et maintient la mise à 25. :(

if ([prefs integerForKey:@"senset"] == NULL) { 
    senset = 25;  
} 

S'il vous plaît aider: P

Harry

Répondre

1

il suffit de demander objectForKey :. S'il est pas défini, il retournera nul

Votre test ne fonctionne pas, parce que integerForKey:. avec une valeur unset retourne 0, ce qui est nil, qui est NULL Les différences entre eux n'existent que pour le compilateur

1

Si zéro n'est pas une valeur valide dans un cas d'utilisation normal (c.-à-d. votre préférence enregistrée serait jamais mis cet entier à zéro), alors vous pouvez vérifier

if([prefs integerForKey:@"senset"] == 0){ 
    [prefs setInteger:25 forKey:@"senset"]; 
} 

Edit: err, je suppose que j'ai une question: lorsque vous essayez de le remplacer, vous définissez une valeur entière (25) pour votre clé (@ "senset")? Si ce n'est pas le cas, il restera zéro ou nul, et à chaque fois que vous le vérifierez, il tentera de changer à nouveau votre variable locale de senset.

4

Vous devez définir une valeur par défaut valide pour chacune de vos préférences. Cette valeur sera utilisée quand elle n'a pas été définie par l'utilisateur.

NSMutableDictionary *defaults = [NSMutableDictionary dictionary]; 
[defaults setObject:[NSNumber numberWithInt:25] forKey:@"senset"]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults]; 
Questions connexes