DateFormatter kann plötzlich keine 24h Uhr mehr konvertieren?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.12.2020 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Qvex23 schrieb:

    Im derzeitigen Quellcode ist der Wert aber force unwrappred, weil ich sonst anstellevon "01.01.2001 18:59" ein "Optional("01.01.2001 18:59")" als String bekommen. Wer auch immer sowas braucht, für mich macht es gerade irgendwie keinen sinn solch einen String zu erhalten.
    Du erhältst von der Methode date(from:) keinen String, sondern ein Optional-Date. Deshalb musst du prüfen, ob du den Rückgabewert unwrappen kannst oder nicht.
  • Michael schrieb:

    Qvex23 schrieb:

    Im derzeitigen Quellcode ist der Wert aber force unwrappred, weil ich sonst anstellevon "01.01.2001 18:59" ein "Optional("01.01.2001 18:59")" als String bekommen. Wer auch immer sowas braucht, für mich macht es gerade irgendwie keinen sinn solch einen String zu erhalten.
    Du erhältst von der Methode date(from:) keinen String, sondern ein Optional-Date. Deshalb musst du prüfen, ob du den Rückgabewert unwrappen kannst oder nicht.
    Hm, laut Doku soll man ein Date oder nil erhalten und kein Optional-Date. Ist die Doku oder die Implementierung jetzt falsch? ?(
  • Michael schrieb:

    Qvex23 schrieb:

    Im derzeitigen Quellcode ist der Wert aber force unwrappred, weil ich sonst anstellevon "01.01.2001 18:59" ein "Optional("01.01.2001 18:59")" als String bekommen. Wer auch immer sowas braucht, für mich macht es gerade irgendwie keinen sinn solch einen String zu erhalten.
    Du erhältst von der Methode date(from:) keinen String, sondern ein Optional-Date. Deshalb musst du prüfen, ob du den Rückgabewert unwrappen kannst oder nicht.
    :cursing: Ohmann, jetzt habe ich schon meine functions durcheinander geworfen. Natürlich bekomme ich ein date von einem String (im dem dämlichen SQLite Format). Sorry.
    @MCDan hat recht, man bekommt ein Date oder ein nil und das war auch mein Problem.
  • MCDan schrieb:

    Michael schrieb:

    Qvex23 schrieb:

    Im derzeitigen Quellcode ist der Wert aber force unwrappred, weil ich sonst anstellevon "01.01.2001 18:59" ein "Optional("01.01.2001 18:59")" als String bekommen. Wer auch immer sowas braucht, für mich macht es gerade irgendwie keinen sinn solch einen String zu erhalten.
    Du erhältst von der Methode date(from:) keinen String, sondern ein Optional-Date. Deshalb musst du prüfen, ob du den Rückgabewert unwrappen kannst oder nicht.
    Hm, laut Doku soll man ein Date oder nil erhalten und kein Optional-Date. Ist die Doku oder die Implementierung jetzt falsch? ?(
    Aus der verlinkten Doku:

    Declaration
    func date(from string: String) -> Date?
    Das Date? am Ende ist der Rückgabetyp: Optional-Date
  • Nein, du bekommst ein Optional-Date zurück bzw. korrekt für den Compiler ausgedrückt ein Optional<Date>.

    Die Schreibweise Date? ist nur „syntactic sugar“ für Optional<Date>. Die Deklaration der Methode date(from:) kann man auch so schreiben:

    func date(from string: String) -> Optional<Date>

    Die Methode gibt nur zwei mögliche case Fälle zurück:
    • Optional.some(dateInstanz) im Erfolgsfall und das kann man dann „unwrappen“
    • Optional.none im Fehlerfall (syntactic sugar dafür ist nil)
    Der Typ Optional<T> ist ein generischer enum mit den beiden cases .none und .some(T).