2016-09-27 2 views
-9

Ich möchte NSDateComponents zu DateComponents konvertieren. Wie kann ich es in Swift ohne Gewaltanwendung tun?Wie konvertiert NSDateComponents zu DateComponents in Swift

+0

Nicht sicher, warum diese Frage geschlossen oder heruntergestimmt wird. Wäre gut, den Grund zu wissen, da dies eine gültige Frage ist, deren Antwort in den Apples API Docs nicht bekannt ist. Es gibt keine öffentliche Methode, um NSDateComponents in DateComponents zu konvertieren, und ich möchte sie nicht nur erzwingen. –

+0

@EricAya @ matts Antwort ist nicht ganz richtig. Ich habe das in einem Projekt ausprobiert und es hat mich gezwungen, "NSDateComponent" zu verwenden, das ich 'als DateComponent' verwendet hatte. –

+0

Fehler: Wert des Typs 'DateComponents' kann nicht in den angegebenen Typ 'NSDateComponents' konvertiert werden let x: NSDateComponents = DateComponents() ^ ~~~~~~~~~~~~ als NSDateComponents –

Antwort

0

Es gibt nichts zu konvertieren. Nur Verwenden Sie DateComponents wo immer Sie zuvor NSDateComponents verwendet hätten.

(Sie können in der Tat werfen von einem zum anderen as verwenden, aber Sie müssen nie. Ihr Code keine Bezug auf NSDateComponents in Swift 3. Sie DateComponents anstelle enthalten.)

0

Als Ergänzung dazu, warum die Frage gültig ist und und ein Beispiel dafür:

Nicht alle APIs sind noch in DateComponents konvertiert. Ein Beispiel ist der Kontakt Rahmen, in dem die Instanz Eigenschaft dates der CNContact/CNMutableContact Klassen deklariert als

open var dates: [CNLabeledValue<NSDateComponents>] 

Leider gibt es keine integrierte Möglichkeit, zwischen den beiden so zu konvertieren, wenn Sie Kraft vermeiden wollen Sie werfen wird haben jede Eigenschaft, um sich selbst zu setzen:

nsDateComponents.day = dateComponents.day 
nsDateComponents.month = dateComponents.month 
// etc ... 

beachten Sie, dass es nicht eine 1: 1-Abbildung der Eigenschaften der beiden Klassen, haben Sie die API sehen, wenn Sie eine vollständige Abbildung tun wollen .

Verwandte Themen