2012-10-26 66 views
0

我想每4天顯示一次UIALertView。但是,讓崩潰的原因是:timeIntervalSince1970與NSUserDefaults崩潰

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.. 

} 

回答讚賞,並將被接受。我知道這可能是一個簡單的錯誤,我已經過了睏倦的時刻。

回答

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

然後

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

所以你基本上設置在用戶默認的NSString,但你希望得到回一個NSDate。既然NSUserDefaults不是魔術,那不會發生。如果你想存儲日期,存儲它使用

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

你可以你從NSUserDefaults後面的物體上使用timeIntervalSince1970

+0

可怕的是,我正想問你,如果你想在Twitter上提出一些SO點。謝啦!我會接受,當它讓我。 :) – CokePokes

+0

@CokePokes沒問題:)這就是爲什麼我喜歡Objective-C的活力:它給了我SO聲望。 :P – 2012-10-26 22:32:53