我试图每隔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..
}
答案赞赏并将被接受。我知道这可能是一个简单的错误,我已经过了困倦的atm。
答案 0 :(得分: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
。