NSUserDefaults随着时间的推移浮动

时间:2014-07-05 23:01:18

标签: ios objective-c floating-point nsuserdefaults

我正在制作一个用户必须尽快完成任务的游戏,我希望显示用户的最佳时间并更新他或她获得新时间的最佳时间。我有:

float BestTimeValue
float starttime
-(void)start{
starttime += 0.001;
timelabel.text = [NSString stringWithFormat:@"%.3f", starttime];
}
if (starttime < BestTimeValue) {
    [[NSUserDefaults standardUserDefaults] setObject:starttime forKey:[@"BestTimeValue"];
}

并在我的viewdidload中:

BestTimeValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"BestTimeSaved"];

starttime在游戏结束时停止,但该值不会显示在标签中。谢谢!

2 个答案:

答案 0 :(得分:0)

您不能将floatsetObject:forKey:objectForKey:方法一起使用。

使用setFloat:forKey:floatForKey:

if (starttime < BestTimeValue) {
    [[NSUserDefaults standardUserDefaults] setFloat:starttime forKey:[@"BestTimeValue"];
}


BestTimeValue = [[NSUserDefaults standardUserDefaults] floatForKey:@"BestTimeSaved"];

答案 1 :(得分:0)

[[NSUserDefaults standardUserDefaults] setObject:forKey:]顾名思义,它只接受像NSString,NSNumber,NSDictionary等对象。

所以你必须使用其他方法[[NSUserDefaults standardUserDefaults] setFloat:forKey]或将浮点数保存在NSNumber中以使用setObjet方法[NSNumber numberWithFloat:thefloat];