将NSNumber转换为NSTimeInterval

时间:2013-06-20 10:31:57

标签: objective-c type-conversion nsnumber nstimeinterval

我已将NSTimeInterval转换为NSNumber,以便将其存储在NSUserDefaults中。我使用了numberWithDouble方法,如下所示:

NSNumber *savedTime = [NSNumber numberWithDouble:timeInterval];

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

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

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

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

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

谢谢,

大卫

1 个答案:

答案 0 :(得分:1)

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

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

获取double值。你需要专注于可能不同的东西。在我的头顶,看看:

  • interval是否已正确声明为doubleNSTimeInterval?告诉我们您如何以及在何处声明interval
  • 当您显示interval以检查其值时,是否正确显示了它。我不得不偶然做到这一点

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

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

  • userDefaults已更改吗?

  • groupTitleForReference已更改。

修改

要检查的另一件事

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

    extern NSTimeInterval interval;
    

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