LoginSignup
1
3

More than 3 years have passed since last update.

【Swift】extensionを使おう

Last updated at Posted at 2020-10-30

はじめに

Swiftにはextensionという仕組みがあります。
クラスを継承せずとも、既存クラスに機能を追加できる、という大変便利な機能です。

開発するアプリに実装する処理内容が多くなってきても、extensionを有効活用することで簡潔なコードで表現しやすくなります。
脱初心者を目指す上で理解必須の仕組みだと思います。

例1: Date型に日付文字列を生成するメソッドを追加

DateExtension.swift
extension Date {
    func getDateTimeString() -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.locale = Locale(identifier: "en_US_POSIX")
        dateFormatter.timeZone = TimeZone.current
        dateFormatter.dateFormat = "yyyy/MM/dd HH:mm:ss"

        return dateFormatter.string(from: self)
    }
}

このようにしておけば下記のようにして簡単に日付文字列を取得できるようになります。
変換メソッドを別に実装するよりも簡潔に書けます。

datesample.swift
let datestr = Date().getDateTimeString()

例2:ViewControllerにアラート表示するメソッドを追加。

ViewControllerでアラート表示をしたい場合はよくあると思います。
それをextensionを使って簡単にできるようにします。

UIViewControllerExtension.swift
extension UIViewController {
    func displayAlert(title:String, message:String){
        let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
        alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))

        self.present(alertController, animated: true, completion: nil)
    }
}

どこのViewControllerからでも、たった1行でアラートウィンドウを出せます。

vcsample.swift
    displayAlert(title: "警告", message: "高熱源体接近!")

動作確認環境

Xcode: 11.7
iOS: 13.7
Swiftバージョン: Swift5

以上

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3