0

我试图每 4 天显示一次 UIALertView。但是因为:

NSInvalidArgumentException', reason: '-[__NSCFString timeIntervalSince1970]:

我在这里尝试使用不同的方法,例如以下代码:https ://stackoverflow.com/a/4278151/1014564导致相同的崩溃。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDate *firstLaunchDate = [defaults objectForKey:@"timeStamp"];
NSDate *dateNow = [[NSDate alloc] init];

if (!firstLaunchDate){

    NSString *nowTimestamp = [NSString stringWithFormat:@"%f", [[NSDate date] timeIntervalSince1970]];

    [defaults setObject:nowTimestamp            forKey:@"timeStamp"];
    [defaults synchronize];


} else if (([dateNow timeIntervalSince1970] - [firstLaunchDate timeIntervalSince1970]) > 86400*4){

 ///UIAlertView Here..

}

答案表示赞赏并将被接受。我知道这可能是一个简单的错误,我已经过了昏昏欲睡的地步。

4

1 回答 1

2
nowTimestamp = [NSString stringWithFormat:...];
[defaults setObject:nowTimestamp forKey:@"timeStamp"];

然后

NSDate *firstLaunchDate = [defaults objectForKey:@"timeStamp"];

所以你基本上是NSString在用户默认值中设置一个,但你希望得到一个NSDate. 既然NSUserDefaults不是魔法,那就不会发生。如果要存储日期,请使用

[defaults setObject:[NSDate date] forKey:@"timeStamp"];

只有这样你才能timeIntervalSince1970在你从NSUserDefaults.

于 2012-10-26T22:27:27.993 回答