Die Eigenschaft generatesCalendarDates
teilt NSDateFormatter
mit, Instanzen von NSCalendarDate
anstelle von NSDate
zu erstellen, wenn ein Datum analysiert wird.
In Swift ist es nicht verfügbar, da NSCalendarDate
veraltet ist und die meisten veralteten APIs in Swift nicht verfügbar sind.
Was war also NSCalendarDate
? Es war eine Unterklasse von NSDate
, die eine timeZone
-Eigenschaft hinzufügte und über Methoden zum Ausführen von Berechnungen mit dem Gregorianischen Kalender verfügte.
Warum wurde es veraltet? Weil Apple die Klasse NSCalendar
in Mac OS X 10.4 (Tiger) eingeführt hat. Sie können Instanzen von NSCalendar
verwenden, um Berechnungen mit mehreren verschiedenen Kalendern durchzuführen, einschließlich des Gregorianischen. NSCalendar
hat seine eigene timeZone
Eigenschaft, wo es Sinn macht; NSDate
Objekte sind immer zeitzonenunabhängig.
DateFormatter
analysiert (und formatiert) Daten unter Verwendung seiner calendar
Eigenschaft. Standardmäßig ist diese calendar
-Eigenschaft auf Calendar.current
festgelegt. Dies ist der Systemkalender. Der Benutzer kann den Systemkalender unter Einstellungen> Allgemein> Sprache & Region> Kalender auswählen.
Sie können die Eigenschaft calendar
explizit auf Gregorian setzen, wenn Sie möchten: dateFormatter.calendar = Calendar(identifier: .gregorian)
. Aber ich würde es nicht empfehlen. Wenn der Benutzer einen anderen Kalender ausgewählt hat, möchten Sie Gregorian wirklich verwenden?
NSCalendarDate wird nicht mehr unterstützt. Benutze es einfach nicht. Warum solltest du es brauchen? –
Oh ich verstehe. Ich hätte gedacht, dass es einfach nicht als Option erscheinen würde. –