2017-05-18 8 views
0

私は日付を操作しているコードを扱っています。クラスDateFormatterのインスタンスにはgenerateCalendarDatesというプロパティがあります。これは私が現在のカレンダーに基づいて日付を作成するために使用されると考えるブール値です。しかし、私がXcodeでこのプロパティを割り当てたり調べたりしようとすると、コード補完のプロパティの説明が表示されます。DateFormatterプロパティgenerateCalendarDatesを使用できないのはなぜですか?

enter image description here

それは実際にこのプロパティを使用しないように言われます。私はなぜこれが不思議だったのですか?私は実際にそれを使用することを考えていたからです。

+1

NSCalendarDateはサポートされなくなりました。ただそれを使用しないでください。なぜあなたはそれを必要としますか? –

+0

ああ、私は参照してください。私はそれがオプションとして現れないと思ったでしょう。 –

答えて

1

generatesCalendarDatesプロパティは、日付を解析するときにNSDateの代わりにNSCalendarDateのインスタンスを作成するように指示します。

NSCalendarDateは廃止され、廃止予定のAPIはほとんどがSwiftで利用できないため、Swiftでは利用できません。

だからNSCalendarDateは何ですか? NSDateのサブクラスで、timeZoneプロパティが追加され、グレゴリオ暦を使用して計算を実行するメソッドがありました。

なぜ廃止されましたか?アップルはMac OS X 10.4(Tiger)にNSCalendarクラスを導入しているからです。 NSCalendarのインスタンスを使用して、グレゴリオ暦を含むいくつかの異なるカレンダーを使用して計算を実行できます。 NSCalendarには固有のtimeZoneプロパティがあります。 NSDateオブジェクトは常にタイムゾーンに依存しません。

DateFormatterは、calendarプロパティを使用して日付を解析(およびフォーマット)します。既定では、そのcalendarプロパティはCalendar.currentに設定されています。これはシステムカレンダーです。ユーザーは、設定>一般>言語&地域>カレンダーでシステムカレンダーを選択できます。

dateFormatter.calendar = Calendar(identifier: .gregorian)の場合は、プロパティをグレゴリオ暦に明示的に設定できます。しかし、私はそれをお勧めしません。ユーザーが別のカレンダーを選択した場合は、グレゴリオ暦の使用を強制してもよろしいですか?

関連する問題