見出し画像

【Swift】【初心者用】extensionとは

はいどうも!

フリーランスエンジニアの南だいすけです!


今日はSwiftのextensionについて書きたいと思います。


extensionとは

extensionはよく

既存クラスにプロパティやメソッドを拡張すること

なんて言われ方をします!


が。。 

初心者の方がそれをいうと何がどう拡張されるの。。?

という疑問が浮かぶと思います。。


なので今回は入りとして、

簡略的にわかりやすさ重視で説明したいと思います。

あくまで入りということを覚えていてください。


extensionの書き方

はじめにextensionの書き方の例を載せておきます。

機能を増やしたいViewController名: extensionしたい機能 {

    // 必要な情報記入!

}

という感じです。


今回はtableViewを題材に書いてみましょう。

よくtableViewを作成すると以下のようなコードを書くと思います。

	
import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
   
   
   @IBOutlet weak var tableView: UITableView!
   
   override func viewDidLoad() {
       super.viewDidLoad()
       tableView.dataSource = self
       tableView.delegate = self
       
   }
   
   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       return 10
   }
   
   
   func numberOfSections(in tableView: UITableView) -> Int {
       return 1
   }
   
   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
       cell.textLabel?.text = "えくすてんしょん"
       
       return cell
       
   } 
}


ここでいう

ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{
   

がextensionで書く部分です!

これをextensionで書いてみます。


import UIKit

class ViewController: UIViewController {
   
   
   @IBOutlet weak var tableView: UITableView!
   
   override func viewDidLoad() {
       super.viewDidLoad()
       tableView.dataSource = self
       tableView.delegate = self
       
   }
}

extension ViewController: UITableViewDelegate, UITableViewDataSource {
   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       return 10
   }
   
   
   func numberOfSections(in tableView: UITableView) -> Int {
       return 1
   }
   
   func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
       cell.textLabel?.text = "えくすてんしょん"
       
       return cell
       
   } 
}

tableViewのコードを日本語にすると

ViewControllerにUITableViewDelegateと

UITableViewDataSourceの機能を追加してね。

必要な情報はextensionの{}内の関数だよ。

と言った感じです。


extensionのメリット

こうすることでextension以下のものがtableViewに必要な情報

(厳密にはdelegate = selfとdataSource = selfも含む)

なのでコードもすっきりしますし、

見やすいというメリットがあります。


とりあえずはじめのうちは、一番はじめの

ViewController: UIViewControllerの後につなげるやつを

extension: ViewController: 〜 みたいな感じで別に書くんだなー

程度に思っておきましょう!


どうだったでしょうか?

今回はSwiftのextensionについて書かせていただきました!


さいごに

プログラミングって難しいですよね。。

僕も文系大学を出て、全くの未経験からスタートしたので

気持ちは痛いほどよくわかります。。!

少しずつ勉強していけば知識が蓄積され、

いつかはそれが線として繋がる日が絶対きます!!

一緒にがんばっていきましょう!


この記事で少しでも初心者の方が、

「お!そういうことか!」とか「ちょっとわかったぞ!!」

っとなっていただけたら幸いです。



最後まで見ていただきありがとうございました!


ではまた次の記事でお会いしましょう!




この記事が気に入ったらサポートをしてみませんか?