コードの修正及び新たな疑問点
お二方とも回答・ご指摘ありがとうございます。
いただいた助言をもとに下記のように書き直しました。
swift
1 let date = NSDate() 2 let format = DateFormatter() 3 format.locale = Locale(identifier:"ja_JP") 4 format.dateFormat = "HH:mm" 5 let nowdate = format.string(from: date as Date) 6 print(nowdate) //現在時刻を出力,(String型) 7 let nowdateA = format.date(from: nowdate) 8 print(type(of: nowdateA)) //Optional<Date>型 9 10 let A: Date! = format.date(from: "13:00") 11 let B: Date! = format.date(from: "18:00") 12 let C: Date! = format.date(from: "21:00") 13 let table:[Date] = [A, B, C] 14 for table in table{ 15 print("(table)") 16 } 17 print(type(of: table)) //Array<Date>型 18 19 let subtime = table.map { $0 - nowdateA} //ここでコンパイルエラー
エラー内容は次の通りです。
Value of optional type 'Date?' must be unwrapped to a value of type 'Date'
アンラップについて色々と調べ、nowdateA!やnowdateA?等やってみたのですがうまくいきません。
そこで、Optional<Date>型のアンラップ方法について教えていただければと思います。
見辛いコードで申し訳ありませんがよろしくお願いいたします。
---追記ここまで----
前提・実現したいこと
- swift4で、date型の配列を作成したいです。
イメージとしては
let table = ["13:00","18:00","22:00"]
のようなものです。(上の例だとstring型になる)
.
2. 作成したdate型の配列と現在時刻の差を求めたいと考えています。
これの私の中のイメージとしては
let subtable = table.map { $0 - nowdate(←現在時刻) }
です。(下記に詳細なコードを記載しています)
試したこと
- let table:Date = ["13:00","18:00","22:00"]とすると、
Cannot convert value of type '[String]' to specified type 'Date'
とエラーがでます。
.
2. let table = ["13:00","18:00","22:00"]
let date = NSDate()
let format = DateFormatter()
format.dateFormat = "HH:mm"
let nowdate = format.string(from: date as Date)
let subtime = table.map { $0 - nowdate }
上のようなコードにすると、
Binary operator '-' cannot be applied to two 'String' operands
とエラーがでます。
補足情報(FW/ツールのバージョンなど)
xcode 11.2.1
プログラミング初学者なので勘違いしている部分がありましたら
ご指摘いただけると幸いです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー