Swiftで現在時刻を一発簡単に呼び出せるようにする方法

こんにちは、@Yuuです。
最近はもっぱらiPhoneアプリばかり作成しているので、Swiftばかり触っています。
皆さんはアプリ制作をしていて現在時刻を取得したい、という場面は多々ありませんか?
僕がアプリ制作をしていると、制作物の中で1回は必ず使ってるような気がします。
それぐらい多様するのですが、呼び出すのが結構めんどくさい!(♯`Π´)
そこで、どうにか簡単に現在時刻を取得出来ないか検討して、タイプメソッドを使う方法を思いついたのでご紹介します。
スポンサーリンク
やりたいこと
Swiftで現在時刻を取得する方法は以下のようになります。
1 2 3 4 5 6 7 8 |
let now = NSDate() let formatter = NSDateFormatter() formatter.dateFormat = "yyyy/MM/dd HH:mm:ss" let string = formatter.stringFromDate(now) println(string) |
上記のコードは下記のサイトを参考にさせて頂きました。
ありがとうございます。
これだけだとたいしたことのないコード量かもしれませんが、これを毎回呼び出すのは結構めんどくさい!
ということでタイプメソッドを使う方法を紹介します。
タイプメソッドとは?
初心者のためのSwiftプログラミング入門より引用させて頂きますと、
通常のプロパティやメソッドは、インスタンスを作成してそこから利用します。
が、クラスから直接利用するようなプロパティやメソッドも用意することができます。これは「タイプ・プロパティ」「タイプ・メソッド」と呼ばれます。
つまりこのタイプメソッドを使用すると、他のクラスからインスタンスを生成せず、すぐにメソッドを呼び出すことが出来るわけです。
実際に記述すると以下のようになります。
1 2 3 4 5 6 7 8 9 |
class hoge { // funcの前にclassを付けるとタイプメソッドになる class func testMethod() { // 処理を記述 } } // インスタンスを生成せずにメソッドを実行する hoge.testMethod() |
9行目でhogeクラスのインスタンスを生成せず、testMethod()を呼び出していますが、これはtestMethod()がタイプメソッドだから行えるというわけです。
実際に作ってみる
今回はTypeMethodSampleという簡単なアプリを作ってみようと思います。
起動したら、現在時刻が表示されるだけの超単純アプリです。
表示するためのViewControllerの準備
Storyboardを使用してViewControllerの真ん中にLabelを配置します。
ViewControllerに"nowTimeLabel"という変数名でLabelを紐付けます。
これでViewControllerの設定は完了です。
現在時刻を取得するタイプメソッドを作る
次に現在時刻を取得するタイプメソッドを作成します。
コードを書く前に今回はUtility.swiftというファイルを作成し、その中にコードを書いていきたいと思います。
Utility.swift内にUtilityというクラスを作成し、その中にnowTimeGet()という現在時刻を取得するタイプメソッドを作ります。
1 2 3 4 5 6 7 8 9 10 11 12 |
class Utility { // 現在時刻を"yyyy/MM/dd HH:mm:ss"のString型で返すクラスメソッド class func nowTimeGet() -> String { // 現在時刻を取得 let now = NSDate() let formatter = NSDateFormatter() // 好きなフォーマットを設定する formatter.dateFormat = "yyyy/MM/dd HH:mm:ss" let str = formatter.stringFromDate(now) return str } } |
これで現在時刻を簡単に取得するためのタイプメソッドは完成!ヽ(•̀ω•́ )ゝ✧
後は呼び出すだけです。
また、8行目のフォーマットは自分が扱うフォーマットに変えて使用して下さい。
nowTimeGetメソッドを使用して現在時刻を表示する
ViewControllerのviewDidLoad()内に以下の1文を追加します。
1 |
nowTimeLabel.text = Utility.nowTimeGet() |
これでLabelに現在時刻を設定することが出来たはず。
結果を見てみると・・
ViewController内のコードを全文載せておきますので、参考にして下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import UIKit class ViewController: UIViewController { @IBOutlet var nowTimeLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() // 現在時刻を取得し、表示する nowTimeLabel.text = Utility.nowTimeGet() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
あとがき
タイプメソッドを使えば、1行で現在時刻が表示出来るようになりました。
他にもよく呼び出すメソッドなんかはこのようにタイプメソッドを使ってもいいかもしれませんね。
ではでは
今回はこの辺で!ヽ(•̀ω•́ )ゝ✧
