gpt4 book ai didi

ios - 直接使用访问器的核心数据 NSTimeInterval 存在错误

转载 作者:行者123 更新时间:2023-11-30 13:45:01 25 4
gpt4 key购买 nike

我在 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

奇怪的是,如果将 dateLastSynced 转换为 NSDate,一切都会正常运行。

对正在发生的事情有什么想法吗?

最佳答案

核心数据DateNSTimeInterval类型的标量属性属性表示自引用日期以来的时间(以秒为单位)2001 年 1 月 1 日。Core Data 透明地生成访问器方法在 NSTimeIntervalNSDate 之间转换。

因此,您使用标量访问器设置一个值

obj.dateLastSynced = date.timeIntervalSinceReferenceDate

然后您检索该值

let date = NSDate(timeIntervalSinceReferenceDate: obj.dateLastSynced)

这给出了与键值编码方法相同的结果

// Set:
obj.setValueForKey(date, "dateLastSynced")
// Get:
let date = obj.valueForKey("dateLastSynced")

关于ios - 直接使用访问器的核心数据 NSTimeInterval 存在错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35064126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com