当前位置: 首页 > 面试题库 >

直接使用访问器的核心数据NSTimeInterval有问题

慕高格
2023-03-14
问题内容

我正在使用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,则一切运行正常。

有什么想法吗?


问题答案:

类型NSTimeInterval为Core Data Date 属性的标量属性表示自参考日期2001年1月1日以来的时间(以秒为单位)。Core
Data生成的访问器方法在NSTimeInterval和之间透明地转换NSDate

因此,您可以使用标量访问器 设置

obj.dateLastSynced = date.timeIntervalSinceReferenceDate

检索 与价值

let date = NSDate(timeIntervalSinceReferenceDate: obj.dateLastSynced)

这提供了与键值编码方法相同的结果

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


 类似资料:
  • 问题内容: 到目前为止,我们使用了几个Linux用户: system_foo @ server system_bar @服务器 … 我们希望将系统用户放入docker容器中。 linux用户->容器 服务器内部的更改没有问题,但是远程系统使用这些用户向我们发送数据。 我们需要工作。远程系统无法更改。 如果每个linux操作系统只有一个系统(将端口22传递到容器),我将非常容易。但是有几个。 我们如

  • 这是运行命令后发生的情况: 启动:pid=4346 port=27017 dbpath=/var/lib/mongodb/data/db 64位host=era-inspiron-5559 2017-02-12T14:39:18.644+0530 I CONTROL[initandlisten]db版本v3.4.2 2017-02-12T14:39:18.644+0530 I控件[initandl

  • 我有以下情况: 只能扩展的数据结构(我只能在尾部添加内容) 我需要能够跟踪我已经看到的元素(我有一个索引,理想情况下我希望能够从这个特定元素开始再次遍历列表) 我希望读取永远不会阻塞,并且添加的新元素只会锁定队列的尾部而不是整个队列 这是一个由多个线程大量修改的结构。 最佳的数据结构是什么? ArrayList.如果能够直接访问使用索引看到的最后一个元素,这将是理想的,但它会导致并发修改异常。我可

  • 我有docker容器用于实验。所以我不知道以后尝试新应用时会使用哪些端口。在docker-run命令中使用ip/port从主机访问docker容器应用程序而不公开它,这是不可能的吗?

  • 如果我没有使用spring构建图形,那么是否可以使用spring框架完全访问我的neo4j图形?我正在尝试一些示例,但它似乎无法正常工作,因为spring创建的某些元数据不存在。 编辑:例如,我有这个错误当我试图通过它的id访问一个节点时,即

  • 不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行 SQL 语句,进行数据库管理。主要的数据库访问接口主要有  ODBC、JDBC、ADO.NET 和 PDO。 ODBC ODBC(Open Database Connectivity,开放数据库互连)为访问不同的 SQL 数据库提供了一个共同的接口。ODBC 使用 SQL 作为访问数据的标准。这一接口提供了最大限度的互操作