В Swift 3 NSCalendar.current
возвращается Calendar
, который является Свифтом значения типа обертки для типа NSCalendar
фонда.
dateComponents()
занимает Set<Calendar.Component>
и два Date
аргументов. Date
является Свифтом значения типа обертки для NSDate
.
Когда существующие интерфейсы Foundation импортируются в 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, или в раздел «Мостовой типы» в Working with Cocoa Frameworks в " Использование Swift с какао и Objective-C " ссылка.
спасибо Мартин Р ... – revi