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にユーザーのデフォルトにを設定していますが、を取り戻すことを期待していますNSDateNSUserDefaults魔法ではないので、それは起こりません。日付を保存する場合は、を使用して保存します

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

そうして初めて、timeIntervalSince1970から戻ってきたオブジェクトで使用できますNSUserDefaults

于 2012-10-26T22:27:27.993 に答える