如何从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是优选的,因为它们提供 适当值语义和使用letvar可变和不可变的变体,而不是 。

全部放在一起:

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“ 参考。

+0

感谢Martin R ... – revi