UIDatePickerからIntを取り出す、およびその逆(Swift4、初心者向け)

最近、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以降の記事かどうかのチェックが必要だと改めて思いました。