Sal*_*han 4 core-data ios swift swift2
我在NSManagedObject子类中使用setValueForKey设置NSTimeInterval,值设置正确,并且在使用valueForKey检索时也正确,但是,如果直接使用访问器,则返回不正确的值.这是一个演示该问题的代码示例
let date = NSDate() //NSTimeIntervalSince1970 = 1447054145.15281
self.setValueForKey(date, "dateLastSynced")
self.valueForKey("dateLastSynced") //= 1447054145.15281
self.dateLastSynced // !!ERROR Incorrect value = 468746945.152815
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果将dateLastSynced转换为NSDate,一切都会完美运行.
关于什么事发生的任何想法?
NSTimeInterval
Core Data Date
属性的标量属性表示自参考日期2001年1月1日以来的秒数.核心数据生成的访问器方法在NSTimeInterval
和之间透明地转换NSDate
.
因此,您使用标量访问器设置值
obj.dateLastSynced = date.timeIntervalSinceReferenceDate
Run Code Online (Sandbox Code Playgroud)
并使用.检索值
let date = NSDate(timeIntervalSinceReferenceDate: obj.dateLastSynced)
Run Code Online (Sandbox Code Playgroud)
这给出了与键值编码方法相同的结果
// Set:
obj.setValueForKey(date, "dateLastSynced")
// Get:
let date = obj.valueForKey("dateLastSynced")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
359 次 |
最近记录: |