Swiftで日付(NSDate型)を文字列(String型)に変換

スポンサーリンク

Swift で NSDate(日付・時間の型)を String(文字列の型)に変換して出力する方法です。後述するサンプルコードで、最初 CoreData の Date 型(Swift/Objective-C の NSDate 型)の属性をそのまま読み出そうとしたところ、エラーになってしまった。

— 環境 —
Swift 1.2
Xcode 6.3.2

【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
画像付き英語辞書 Imagict | 英単語をイメージで暗記
【開発記録】
英単語を画像イメージで暗記できる英語辞書サービスを作って公開しました
スポンサーリンク

Cannot assign a value of type ‘NSDate’ to a value of type ‘String?’

以下のサンプルコードは CoreData を使っており、NSManagedObject として SomeModel モデル(エンティティ)があるとします。また、その属性(attribute)として Date 型(NSDate)の created_at を持っている。records[indexPath.row].created_at と呼び出して、UITableView のセルの textLabel のテキストとして設定しようとしたところ、Date を String に変換できないためエラーが発生しました。

修正前の SomeViewController.swift

上記コードだと正しく動作しません。records[indexPath.row].created_at as! String と強制キャストも駄目でした。

NSDateFormatter() で NSDate を String に変換

調べたところ、NSDate 型を String 型として出力するには、NSDateFormatter() によってフォーマットする必要があるそうです。NSDateFormatter() を使った dateString(date: NSDate) メソッドを定義して、それを使うように修正しました。

修正後の SomeViewController.swift

上記の修正により、cell の textLabel に日付の文字列を表示させることができました。

スポンサーリンク
 
スポンサーリンク

Leave Your Message!