Swift 为什么带有两个`NSDate`对象的`timeIntervalSince()`需要`as-Date`?
我有一个Swift 为什么带有两个`NSDate`对象的`timeIntervalSince()`需要`as-Date`?,swift,date,nsdate,nstimeinterval,Swift,Date,Nsdate,Nstimeinterval,我有一个NSManagedObject对象,其中包含: @NSManaged public var timestamp: NSDate 我需要其中两个之间的时间间隔,因此我实现了: let interval = next.timestamp.timeIntervalSince(current.timestamp) 为什么这会导致以下错误 'NSDate' is not implicitly convertible to 'Date'; did you mean to use 'as' to
NSManagedObject
对象,其中包含:
@NSManaged public var timestamp: NSDate
我需要其中两个之间的时间间隔,因此我实现了:
let interval = next.timestamp.timeIntervalSince(current.timestamp)
为什么这会导致以下错误
'NSDate' is not implicitly convertible to 'Date'; did you mean to use
'as' to explicitly convert?
我很惊讶,因为next
和current
都属于NSDate
类型,而timeIntervalSince()
是一种NSDate
方法
按照错误中的建议很容易修复,但我想了解这里发生了什么:
let interval = next.timestamp.timeIntervalSince(current.timestamp as Date)
如果有问题,请在Swift 3.0上查看。参考:
对基础框架的快速覆盖提供日期 结构,它连接到NSDate类。日期值类型 提供与NSDate引用类型相同的功能 这两种代码可以在与交互的Swift代码中互换使用 Objective-C API。这种行为类似于Swift bridges 标准字符串、数字和集合类型与其对应的 基础类。
如果选中timeIntervalSince
方法签名,则它是func timeIntervalSince(\uuotherdate:Date)->TimeInterval
,请注意,anotherDate
日期类型是Date
(不再是NSDate
)
<>对于新的值类型、可更改性和基础值类型的检查,有一组新的值类型,如:NStaseNStutabelDATABOS>数据、NSIXDEXPATH > >索引路径、N通知No>通知……/P>