25

NSDate オブジェクトを JSON エンコードしようとすると、この例外が発生します。NSDate は JSON エンコードと互換性がないと思います。しかし、日付をエンコードする必要があります。解決策はありますか?

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (__NSDate)'
4

8 に答える 8

14

最初にデータをNSStringに保存します。次に、文字列をNSDateに変換します。

あなたはSOを参照することができます:

NSStringをNSDateに変換する(そしてまた元に戻す)

NSStringからNSDateへの変換の問題

NSDateFormatterを使用してNSStringをNSDateに変換するにはどうすればよいですか?

于 2013-01-15T12:13:03.000 に答える
7

NSDateをNSStringに変換し、エンコードを試みます。

- (NSString *) changeDateToDateString :(NSDate *) date {

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
    NSLocale *locale = [NSLocale currentLocale];
    NSString *dateFormat = [NSDateFormatter dateFormatFromTemplate:@"hh mm" options:0 locale:locale];
    [dateFormatter setDateFormat:dateFormat];
    [dateFormatter setLocale:locale];
    NSString *dateString = [dateFormatter stringFromDate:date];
    return dateString;
}
于 2013-01-15T12:13:22.020 に答える
4

やってみました ?

updateDate = [NSNumber numberWithFloat:[[NSDate date] timeIntervalSince1970]];

ここで説明されているように:SDKはNSDateオブジェクトをサポートしていません

次の手順に従います。

1. 日付を JSON 形式に変換します。

 NSDateFormatter *formatter = [[[NSDateFormatter alloc] init]autorelease];
 [formatter setDateFormat:@"Z"];
 NSString *updateDate = [NSString stringWithFormat:@"/Date(%.0f000%@)/", [[NSDate date] timeIntervalSince1970],[formatter stringFromDate:[NSDate date]]];

2. いくつかの配列に埋め込み、配列を POST します。

于 2013-01-15T12:16:28.457 に答える
1

日付をエンコードする前に、日付を文字列に変換する必要があります。どこにでも十分な例があるので、見つけやすいはずです

于 2013-01-15T12:13:48.833 に答える