2016-12-17 5 views
1

Das ist mein Code. Aber ein Fehler sagte, kann nicht dateComponent mit einer Argumentliste vom Typ aufrufen ...Wie aus NSDate (timeIntervalSince1970 zu NSDate() konvertieren?

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) 

Antwort

0

In Swift 3, NSCalendar.current kehrt ein Calendar, die der Swift Wert Wrapper für die Foundation NSCalendar Typ ist.

dateComponents() dauert Set<Calendar.Component> und zwei Date Argumente. Date der Swift-Wert Wrapper für NSDate.

Wenn bestehende Foundation APIs in Swift importiert werden, werden die Typen automatisch überbrückt, das, warum NSCalendar.current eine Calender und nicht NSCalendar zurückgibt.

Die Werte-Typen werden in Swift 3 bevorzugt, da sie die richtigen Wert Semantik liefern und let und var statt von unveränderlichen und veränderlichen Varianten verwenden.

Dass sie alle zusammen:

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) 

Weitere Informationen über Swift 3-Wert-Wrapper-Typen und ihre entsprechenden Typen Foundation finden SE-0069 Mutability and Foundation Value Types, oder den Abschnitt "Bridged-Typen" in Working with Cocoa Frameworks im " Verwenden von Swift mit Kakao und Objective-C " Referenz.

+0

danke Martin R ... – revi