Core Data NSTimeInterval using an accessor directly is buggy
我正在使用 NSManagedObject 子类中的 setValueForKey 设置 NSTimeInterval,该值被正确设置,并且在使用 valueForKey 检索时也是正确的,但是,如果直接使用访问器,它会返回不正确的值。这是一个演示问题的代码示例
1
2 3 4 5 |
let date = NSDate() //NSTimeIntervalSince1970 = 1447054145.15281 self.setValueForKey(date,"dateLastSynced") self.valueForKey("dateLastSynced") //= 1447054145.15281 |
奇怪的是,如果将 dateLastSynced 转换为 NSDate,一切正常。
对发生的事情有什么想法吗?
Core Data
属性表示自参考日期以来的时间(以秒为单位)
2001 年 1 月 1 日。Core Data 透明地生成访问器方法
在
之间转换
因此,您使用带有
的标量访问器设置一个值
1
|
obj.dateLastSynced = date.timeIntervalSinceReferenceDate
|
然后你用
检索值
1
|
let date = NSDate(timeIntervalSinceReferenceDate: obj.dateLastSynced)
|
这给出了与键值编码方法相同的结果
1
2 3 4 |
// Set:
obj.setValueForKey(date,"dateLastSynced") // Get: let date = obj.valueForKey("dateLastSynced") |
分配给
另外,如果
1
|
self.setValue(NSDate(timeIntervalSinceReferenceDate: <value>), forKey:"dateLastSynced")
|
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/268688.html