2016-12-17 5 views
1

Это мой код. Но сказал, ошибка, не может ссылаться на 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) 

ответ

0

В 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 " ссылка.

+0

спасибо Мартин Р ... – revi

Смежные вопросы