前提・実現したいこと
デートピッカーに入力された生年月日のデータを遷移させ、次の画面のラベルにて年齢を表示したいです。
Xcodeで簡単な年齢計算のアプリを作っています。
デートピッカーにて入力されたデータを次の画面に遷移させ、現在の日付との差分から○才○ヶ月○日というようにラベルに表示したいです。
生年月日データの値渡し、現在の日付の取得までは成功しています。
生年月日から現在の日時までの差分を求めるコードでエラーが発生してしまいました。
発生している問題・エラーメッセージ
swift
1Cannot invoke 'dateComponents' with an argument list of type '([Int?], from: String?, to: Date)'
該当のソースコード
swift
1import UIKit 2 3class mainViewController: UIViewController { 4 5 @IBOutlet weak var birthDate: UILabel! 6 7 var birthText: String? 8 var yyyy: Int? 9 var MM: Int? 10 var dd: Int? 11 12 let calendar = Calendar(identifier: .gregorian) 13 14 15 override func viewDidLoad() { 16 super.viewDidLoad() 17 18 birthDate.text = birthText 19 let birthDate = DateComponents(calendar: calendar, year: yyyy, month:MM, day: dd).date! 20 21 22 let now = NSDate() 23 let formatter = DateFormatter() 24 formatter.dateFormat = "yyyy/MM/dd" 25 let nowTime = formatter.string(from: now as Date) 26 27 28 //↓こちらのコードでエラーが起きています。 29 let elapsedComps = calendar.dateComponents([yyyy, MM, dd], from: birthText, to: nowTime) 30 String(format: "生後%d年%dヶ月%d日", elapsedComps.yyyy!, elapsedComps.MM!, elapsedComps.dd!) 31 32 } 33 } 34
試したこと
birthTextとnowTimeがString型になっていて計算ができないと考えたので、Int型に型変換をしてみたのですがうまくいきませんでした。
はじめての質問でわかりにくい箇所もあるかと思いますが、ご指導いただけたら嬉しいです。
どうぞよろしくお願いします。
補足情報(FW/ツールのバージョンなど)
型変換は、
let str = nowTime
let num = Int(str)!
と試しました。
また最初の宣言部分の
var...String?の部分をInt?に変更も試しました。