アップデート 3 がおそらく最も関連性が高いことに注意してください
NSTimeInterval
を使用して nsdate オブジェクトを使用して管理対象オブジェクトのプロパティを設定していますsetValue:forKey:
値を取得しようとすると、実行時に奇妙なものが得られます
NSLog(@"[managedObject valueForKey:@\"startTime\"] : %@, [NSDate dateWithTimeIntervalSince1970:[managedObject startTime]]: %@",
[managedObject valueForKey:@"startTime"],[NSDate dateWithTimeIntervalSince1970:[managedObject startTime]]);
戻り値
[managedObject valueForKey:@"startTime"] : 2012-07-14 08:13:05 +0000,
[NSDate dateWithTimeIntervalSince1970:[managedObject startTime]]: 1981-07-14 08:13:05 +0000
更新 1
によって返される値[managedObject valueForKey:@"startTime"]
は正しいです。ただし[NSDate dateWithTimeIntervalSince1970:[managedObject startTime]]
、より強く型付けされるように、または同様のものを使用することをお勧めします。
[managedObject startTime]
間違った値 =>を返すと思います363954111.000000
。
ただし、次のように設定します。
managedObject setValue:1342261311 forKey:@"startTime"
[managedObject valueForKey:@"startTime"]
正しい NSDate オブジェクトを返すため、これが間違っているかどうかはわかりません。
更新 2
KVC と.
構文によって返される double 値をログに記録しました。
managedObject.startTime = 363954111.000000
valueForKey timeIntervalSince1970 = 1342261311.000000
更新 3
わかりました、テストをセットアップしました。開始時間はこのように設定されentity.startTime = [[NSDate dateWithTimeIntervalSince1970:1342261311] timeIntervalSince1970];
、終了時間はこのように設定されています[entity setValue:[NSDate dateWithTimeIntervalSince1970:1342261311] forKey:@"endTime"];
それらをログに書き込むと、これが得られますstart = 1342261311.000000, end = 363954111.000000
NSDate オブジェクトが正しくアンラップされているようですが、これを見た人はいますか?