2010-12-12 5 views
0

Je dois enregistrer une préférence de curseur dans mon Settings.bundle.Curseur iPhone enregistrer les préférences utilisateur

J'utilise le code suivant pour écrire au Settings.bundle:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setInteger:mySlider.value forKey:@"TimerSliderKey"]; 
[defaults synchronize]; 

Et le code suivant pour lire de la Settings.bundle:

NSUserDefaults *defaults2 = [NSUserDefaults standardUserDefaults]; 
int valueForSlider = [defaults2 integerForKey:@"TimerSliderKey"]; 
NSLog(@"The saved slider value is %@" , valueForSlider); 

Ce code ne fonctionne pas . Quelqu'un peut-il me donner un code de remplacement que je pourrais utiliser?

Répondre

5

Votre problème est ici:

NSLog(@"The saved slider value is %@" , valueForSlider); 

Vous devez utiliser le spécificateur de format %d, %@ est le spécificateur de format pour envoyer le message description à l'argument.

NSLog(@"The saved slider value is %d" , valueForSlider); 

Voici une liste des spécificateurs:

alt text

Voir la String Programming Guide pour plus d'informations.

+0

Merci! Acceptera votre réponse dans 7 minutes! +1 – Linuxmint

1

L'autre, et peut-être le vrai, est que la valeur de UISlider est comprise entre 0,0 et 1,0 par défaut. En le stockant comme un nombre entier, vous ne verrez jamais que 0 ou 1 en raison de la troncature.

Vous devez le stocker en tant que virgule flottante au lieu de conserver entièrement la valeur du curseur.

+0

Merci de votre contribution (+1), j'avais précédemment réglé l'heure de 0.0 à 10.0. – Linuxmint

+1

Ensuite, vous n'obtiendrez que des valeurs de 0,1,2,3 ... 10, le composant à virgule flottante de la valeur sera toujours perdu. Si c'est intentionnel, alors ce n'est pas un problème. Sinon, vous devriez stocker la valeur en tant que flottant pour éviter de perdre une partie de la préférence de l'utilisateur. – freespace

+0

Oui, c'était intentionnel. – Linuxmint

0

utilisation celui-ci ...

[**yourslider** addTarget:self action:@selector(sliderValueChanged:) 
          forControlEvents:UIControlEventValueChanged]; 

if ([[NSUserDefaults standardUserDefaults]floatForKey:@"value"]) { 

    yourslider.value= [[NSUserDefaults standardUserDefaults]floatForKey:@"value"]; 

    } 


**--save your value in this method** 

-(IBAction)sliderValueChanged:(UISlider *)sender 
{ 

    NSLog(@"slider value = %f", sender.value); 


    [[NSUserDefaults standardUserDefaults]setFloat:sender.value forKey:@"value"]; 

} 
Questions connexes