我可以使用一些帮助。经过几天令人沮丧的试验和错误,我得到不一致的结果,将首选项写入 NSUserDefaults。
以下是连续的代码行:
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 是一个常量字符串。
如您所见,我记录了键的当前值,然后记录了我打算存储的值,同步,然后重新读取存储的值。对我来说似乎很简单,但这是调试器输出:
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
我看到原始值 0,以 571 结尾的预期值,以及从缓存中读取的值,该值延迟了 6 秒。
我不确定新的默认值来自哪里。有任何想法吗?我在设备和模拟器上得到了类似的行为。
谢谢布拉德