- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 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 Apple Documentation :
The Swift overlay to the Foundation framework provides the Date structure, which bridges to the NSDate class. The Date value type offers the same functionality as the NSDate reference type, and the two can be used interchangeably in Swift code that interacts with Objective-C APIs. This behavior is similar to how Swift bridges standard string, numeric, and collection types to their corresponding Foundation classes.
如果查看timeIntervalSince
方法签名,是func timeIntervalSince(_ anotherDate: Date) -> TimeInterval
,注意anotherDate
日期类型是 Date
(不再是 NSDate
)。
有关新值类型的更多信息,请查看 this proposal在可变性和基础值类型方面,有一堆新的值类型,例如:NSData、NSMutableData -> Data、NSIndexPath -> IndexPath、NSNotification -> 通知...
关于swift - 为什么具有两个 `as Date` 对象的 `timeIntervalSince()` 需要 `NSDate`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40125100/
我正在尝试计算从一个日期到另一个日期的天数,并且找到了两种计算方法。 第一个使用 NSDateComponents 如下: NSCalendar *gregorianCalendar = [[NSCa
我正在尝试找出我们现在是多少毫秒。我找不到以毫秒为单位返回忽略日期的时间的方法,所以我想我可以根据 timeIntervalSince 1970 方法返回的值来计算它。 我这样做了: NSLog(@"
我有一个 NSManagedObject 对象: @NSManaged public var timestamp: NSDate 我需要两者之间的时间间隔,所以我实现了: let interval =
我是一名优秀的程序员,十分优秀!