Swift転職なら=>【LevTech】
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大
↑クリックして拡大

頭痛が減ったので共有です!

rebuild.fmを応援しています!

HOME > Extension

Extensionとは?

拡張クラス説明4

Extensionとは既存のクラスを簡単に拡張できたりする機能です。例えば、String型にhogeというメンバ関数を簡単に追加できます。

参考:Example how to extend array type in Swift
参考:Swiftに関するメモ その9 - Extensions

やってみた

上記のString型にhoge関数を追加してみます。


import Foundation
extension String {
 //メンバ変数のhogeを追加
    func hoge()->String{
        return "I am hoge";
    }
}

これだけです。この記述をしたファイルをプロジェクトに追加するだけで、String型のクラスにhoge関数を利用することができます。

extensions.swiftを作成して追加

extensionの記述はどのファイルに記載していてもかまいませんが、今回はわかりやすく[extension.swift]ファイルを別途拡張用として作成してプロジェクトに追加してみます。

拡張クラス説明1

上記のようにプロジェクトに追加するだけで、下の様にコードヒントまで出てきてくれます。

拡張クラス説明2

メンバ変数を追加したい

変数は既存のクラスには追加できません。[Extension may not contain stored properties]と表記されてコンパイルできません。自作クラス等を作成する必要があります。


import Foundation
extension String {
    
var dynamicSalaryman:String = "Dynamic";
let staticSalaryman:String = "Static";

 //メンバ変数のhogeを追加
    func hoge()->String{
        return "I am hoge";
    }
}

上をコピペすると、下のエラーが発生します

拡張クラス説明3

複数の拡張を一つのファイルで実施したい

一つのファイルの中で複数の拡張を記載してもOKです。以下はStringとUIImageにそれぞれhogeメンバ関数を追加した例です。簡単に拡張できます。


import Foundation
import UIKit

//Stringにhogeを追加
extension String {
    func hoge()->String{
        return "I am hoge";
    }
}

//UIImageにhogeを追加
extension UIImage {
    func hoge()->String{
        return "I am hoge at UIImage";
    }
}

おまけ

Extensionは工夫次第で様々な事が可能です。以下サンプルサイト様をリストアップしてみましたのでよろしければご確認くださいませ。

↓こんな記事もありますよ!

GはGoogle他のアルファベットを勝手に妄想してみる

さて昨日はGoogleが衝撃的な発表でAlphabetという親会社をつくって、Googleはアルファベットの中のGがGoogleとの 位置づけで今後展開していくとの事。ネーミングもですが、今後の期待を大きく感じる、またわかりやすく好印象だったのか株価も 大きく上がったとのことでした。さて、その他残りのアルファベットはどんな風になるのかなぁと勝手に歩きながら妄想してみました。

デバッグ時とリリース時に処理を変更する#ifdef DEBUG のやり方

DEBUG時だけ特定の動作をさせて、リリース時に排除したい、そんな時に利用する方法です。Swiftでは標準ではDEBUGとリリースの判断がつかないので、 コンパイル時に設定する必要があります

WatchKitでウォッチに簡単なラベルを表示してみる

前回の記事ではWatchKitのサンプルの画面キャプチャを紹介しましたので、今回は実際にプロジェクトの作成から簡単なラベルを表示する、 簡単な最初の第一歩までを説明します。AppleWatchの細かい説明は後にしてひとまず動作させてみます。
このエントリーをはてなブックマークに追加
右側のFacebookのLikeをクリック頂けると記事更新の際に通知されますので宜しければご利用下さい!