Je pourrais utiliser de l'aide. Après quelques jours frustrants d'essais et d'erreurs, j'obtiens des résultats incohérents en écrivant des préférences à NSUserDefaults.iPhone SDK NSUserDefaults ne pas enregistrer les valeurs correctes
Voici les lignes consécutives de code:
NSLog(@"startTimer(): End Time defaults: %f\n", [defaults floatForKey:kEndTimeKey]);
NSLog(@"startTimer(): new End Time: %f\n", endTime);
[defaults setFloat:endTime forKey:kEndTimeKey];
[defaults synchronize];
NSLog(@"startTimer(): stored EndTimeKey: %f\n", [defaults floatForKey:kEndTimeKey]);
kEndTimeKey est une chaîne constante.
Comme vous pouvez le voir, je consigne la valeur actuelle de la clé, puis j'enregistre la valeur que j'ai l'intention de stocker, synchroniser, puis relire la valeur stockée. Cela semble simple pour moi, mais voici la sortie du débogueur:
2009-07-22 22:05:43.263 TimerTest3[1584:207] startTimer(): End Time defaults: 0.000000
2009-07-22 22:05:43.266 TimerTest3[1584:207] startTimer(): new End Time: 270018630.916571
2009-07-22 22:05:43.287 TimerTest3[1584:207] startTimer(): stored EndTimeKey: 270018624.000000
Je vois la valeur initiale 0, la valeur prévue à la fin 571, et la valeur lue à partir du cache qui est de 6 secondes d'arrêt.
Je ne sais pas d'où vient la nouvelle valeur par défaut. Des idées? J'ai un comportement similaire sur l'appareil et sur le simulateur.
Merci Brad
Je crois que vous avez raison. J'essayais de stocker NSTimeIntervals qui sont définis comme doubles. Cela explique pourquoi la fonctionnalité était étroite dans certains cas, incohérente dans d'autres, et parfaite pour les petits nombres. –