最近、Swiftを書き始めました。主にモバイルアプリを動かすための言語なので、いろいろ分からんところが多かったです。
はまったところもいくつかあり、今回は日付について、書こうと思います。
UIDatePicker←→年月日のInt
直接的にはまったところは、UIDatePickerから年月日の値をそれぞれInt型の変数で取り出す、およびその逆です。 結論としては、コードは以下のようになります。
// Int → Date Picker let calendar: Calendar = Calendar(identifier: .gregorian) let year = 2018 let month = 2 let day = 18 let dateComponent = DateComponents(year: year, month: month, day: day) let date = calendar.date(from: dateComponent)! dateComponent .setDate(date, animated: false)
// Date Picker → Int let calendar = Calendar(identifier: .gregorian) let pickerDate = datePicker.date let dateComponents = calendar.dateComponents([.year, .month, .day], from: pickerDate ) let year = dateComponents.year! let month = dateComponents.month! let day = dateComponents.day!
DateとNSDate
UIDatePickerの使い方をネットでググると、NSDateをセットしろという内容の記事にあたることがあります。 しかし、上記の通りNSDateは使用していませんし、UIDatePickerのsetDateメソッドでも記載がありません。
それもそのはずで、Swift3からはNS〇〇型はおおむねNSをとった〇〇型に移行している感じです。*1
2014年にSwiftが登場して以降、Objective-C→Swiftという流れがあり、Swiftでも毎年のように1→2→3→4とバージョンが上がっています。3から4はそうでもないですが、それ以外は大きな変更です。 ググるときには、Swift3がリリースされた2016年9月*2以降の記事かどうかのチェックが必要だと改めて思いました。