我已将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];
所有变量都在标头中正确声明。知道为什么它不起作用吗?
谢谢,
大卫
答案 0 :(得分:1)
在这两种情况下,您都使用
[[[userDefaults objectForKey:groupTitleForReference] objectForKey:@"time"] doubleValue]
获取double
值。你需要专注于可能不同的东西。在我的头顶,看看:
interval
是否已正确声明为double
或NSTimeInterval
?告诉我们您如何以及在何处声明interval
。当您显示interval
以检查其值时,是否正确显示了它。我不得不偶然做到这一点
NSTimeInterval interval = ....
NSLog(@"%@", interval);
向我们展示您用来检查间隔及其输出的代码。
userDefaults已更改吗?
groupTitleForReference
已更改。修改强>
要检查的另一件事
如果interval
是全局的,请确保标题中的声明格式为
extern NSTimeInterval interval;
如果省略extern
,您将在包含标题的每个文件中获得一个名为interval
的单独变量。