这是我的代码。但是一个错误说,不能使用类型为...的参数列表调用dateComponent。
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)
答案 0 :(得分:1)
在Swift 3中,NSCalendar.current
会返回Calendar
,即{。}}
基金会NSCalendar
类型的Swift值包装器类型。
dateComponents()
需要Set<Calendar.Component>
和两个Date
个参数。 Date
是NSDate
的Swift值包装类型。
将现有的Foundation API导入Swift时,类型会自动桥接,这就是为什么NSCalendar.current
返回Calender
而不是NSCalendar
。
值类型在Swift 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)
有关Swift 3值包装器类型和的更多信息 他们对应的基础类型,请参阅 SE-0069 Mutability and Foundation Value Types, 或者#34;桥接类型&#34;在 Working with Cocoa Frameworks在&#34;使用Swift with Cocoa和Objective-C&#34; 参考