如何从NSDate的(timeIntervalSince1970转换成NSDate的()?
问题描述:
这是我的代码,但一个错误说,不能与类型的参数列表调用dateComponent ...如何从NSDate的(timeIntervalSince1970转换成NSDate的()?
let fromDate = NSDate(timeIntervalSince1970: TimeInterval(tweetsArray[indexPath.row].timestamp)!)
let toDate = NSDate()
let components : NSCalendar.Unit = [.second, .minute, .hour, .day, .weekOfMonth]
let differenceOfDate = NSCalendar.current.dateComponents(components, from: fromDate, to: toDate)
答
在斯威夫特3,NSCalendar.current
回报一个Calendar
,这是基金会NSCalendar
类型 夫特值包装类型。
dateComponents()
需要Set<Calendar.Component>
和两个Date
参数。Date
为迅捷值包装类型210。
在现有的基础上的API被导入到斯威夫特,为什么NSCalendar.current
返回Calender
,而不是NSCalendar
的类型自动桥接,即。
值类型夫特3是优选的,因为它们提供 适当值语义和使用let
和var
可变和不可变的变体,而不是 。
全部放在一起:
let fromDate = Date(timeIntervalSince1970: ...)
let toDate = Date()
let components = Set<Calendar.Component>([.second, .minute, .hour, .day, .weekOfMonth])
let differenceOfDate = Calendar.current.dateComponents(components, from: fromDate, to: toDate)
更多有关斯威夫特3值包装类型和 其对应的基金类型,请参阅 SE-0069 Mutability and Foundation Value Types, 或在 Working with Cocoa Frameworks节“桥接类型”的“使用可可和Objective-C的Swift“ 参考。
感谢Martin R ... – revi