【发布时间】:2012-07-14 08:31:20
【问题描述】:
请注意,更新 3 可能是最相关的
我正在使用 setValue:forKey: 设置带有 nsdate 对象的托管对象的 NSTimeInterval 属性
当我尝试获取值时,我得到了奇怪的东西,在运行时这个
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 和 . 语法返回的双精度值。
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 对象的解包不正确,有人见过吗?
【问题讨论】:
-
startTime 是什么类型:NSDate 还是 NSTimeIntervall?
-
这是一个 NSTimeInterval 属性
-
您在编辑中提到的代码
[NSDate dateWithTimeIntervalSince1970:[managedObject startTime]],不会产生正确的值吗?您是否尝试过分解您的代码,即在将其交给dateWithTimeIntervalSince1970:之前检查startTime是否包含您期望的值? -
那么,也许这就是你应该努力追求的——当然只是一个建议。但恐怕我现在必须退出这个交易所 - 祝你寻找错误好运!
标签: objective-c ios core-data key-value-coding nstimeinterval