1

我已将 NSTimeInterval 转换为 NSNumber,以便将其存储在 NSUserDefaults 中。我使用了这样的 numberWithDouble 方法:

NSNumber *savedTime = [NSNumber numberWithDouble:timeInterval];

我正在另一个视图中检索信息,但遇到了问题。该数字似乎不想正确转换。我知道该号码正在结转,因为我能够查看此标签中的号码,并且它正确显示:

timeLabel.text = [NSString stringWithFormat:@"%f", [[[userDefaults objectForKey:groupTitleForReference] objectForKey:@"time"] doubleValue]];

但是当我将间隔设置为双精度值时,它不起作用。我正在使用这个:

interval = [[[userDefaults objectForKey:groupTitleForReference] objectForKey:@"time"] doubleValue];

所有变量都在标题中正确声明。知道为什么它不起作用吗?

谢谢,

大卫

4

1 回答 1

1

在这两种情况下,您都使用

[[[userDefaults objectForKey:groupTitleForReference] objectForKey:@"time"] doubleValue]

获得double价值。您需要专注于可能有所不同的地方。在我的脑海中,看看:

  • 正确interval声明为 a doubleor NSTimeInterval? 向我们展示您申报的方式和地点interval
  • 当您显示interval以检查其值时,您是否正确显示它。众所周知,我无意中这样做

    NSTimeInterval interval = ....
    NSLog(@"%@", interval);
    

    向我们展示您用于检查间隔及其输出的代码。

  • userDefaults 是否已更改?

  • groupTitleForReference了。

编辑

另一件事要检查

  • 如果interval是全局的,请确保标题中的声明格式为

    extern NSTimeInterval interval;
    

    如果省略extern,您将interval在每个包含标题的文件中调用一个单独的变量。

于 2013-06-20T11:55:00.637 回答