2

少しのコードでdate1とdate2を比較していて、クラッシュ通知を受け取っています。

NSUserDefaultsでdate1を取得します。

NSDate *date1 = [[NSUserDefaults standardUserDefaults] 
objectForKey:@"date1"];

NSDate *date2 = [[NSDate alloc] init]; 

if (fabs([date2 timeIntervalSinceDate:date1]) < 60)
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"60 seconds or less" message:@"Text" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil, nil];
    [alert show];
    return;
}

次のように、date1をNSUserDefaultsに保存しています。

NSDate *date1 = [[NSDate alloc] init];

[[NSUserDefaults standardUserDefaults] setObject:date1 forKey:@"date1"];

[[NSUserDefaults standardUserDefaults] synchronize];

アプリがクラッシュし、-[__ NSCFString timeIntervalSinceReferenceDate]:認識されないセレクターがインスタンスに送信されました。誰かアイデアはありますか?

ありがとうございました!

4

3 に答える 3

6

日付を保存するには、これを使用します。

NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
[[NSUserDefaults standardUserDefaults] synchronize];

そしてそれを取得するには、これを使用します:

NSDate *myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
于 2012-12-18T10:47:50.540 に答える
4

私はあなたのコードをコンパイルしました、そしてそれは私のために働きます。これはそれがどのように見えるかです:

NSDate *date1test = [[NSDate alloc] init];
[[NSUserDefaults standardUserDefaults] setObject:date1test forKey:@"date1"];
[[NSUserDefaults standardUserDefaults] synchronize];


NSDate *date1 = [[NSUserDefaults standardUserDefaults]
                 objectForKey:@"date1"];
NSDate *date2 = [[NSDate alloc] init];
if (fabs([date2 timeIntervalSinceDate:date1]) < 60)
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"60 seconds or less" message:@"Text" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil, nil];
    [alert show];
    return;
}

これがあなたのためにコンパイルされるかどうかを確認してください

于 2012-12-18T10:49:36.280 に答える
0

ばかげた間違いがあります...

で日付が割り当てられていませんdate1。使用してください

NSDate *date1 = [NSDate date];

それを取得するには、

NSLog(@"-> %@",[[NSUserDefaults standardUserDefaults]objectForKey:@"myDateKey"]);
于 2012-12-18T10:58:13.883 に答える