FRMSKI開発ブログ

AWS、iOS、AR/VRなど開発メモ

Swiftにおける基本のMVCアーキテクチャについて

デザインパターンといえば、MVC・MVP・CleanArchitectureなど様々なアーキテクチャありますが、今回は基本の基本、であるMVCについて、Swiftにおける基本をまとめました。

MVCについて説明

まずMVCとはアプリケーションを実装するためのデザインパターンで、内部データをユーザーが直接参照・編集する情報から分離します。以下の3つの部分に分割されます。 ・Model - ビジネスロジックなど処理部分を書きます ・View - 画面への表示部分を担当します ・Controller - Model、Viewへ指示を出します 下画像はMVCのイメージ図 f:id:frmski:20181007232634p:plain:w500

SwfitにおけるMVC

さてSwiftでのMVCはViewとControllerが一つになっています。なのでMassiveViewControllerと言われるようなViewControllerの肥大化が課題となっています。この課題はCleanArchitectureやMVVMなど、他のデザインパターンで解決できるのですが、今回はMVCの理解を深めましょう。

Modelを作成

今回はTestViewController.swiftとTestModel.swiftを作成してVCとMの連携を簡単に実装します。下記ソースでは、TestModelにデリゲートを作成して値を監視するようにしています。

protocol TestModelDelegate:class {
    func did()
}
class TestModel{
    private num:int = 0
    var delegate:TestModelDelegate? = nil

    //値をセット
    public func setNum(_num:int){
        num = _num
        delegate?.did()
    }
}

ViewControllerを作成

ViewControllerではTestModelを作成し、変数の管理やビジネスロジックの実装を任せます。

class TestViewController :UIViewController,TestModelDelegate{
    private var tModel = TestModel()
    override func viewDidLoad(){
        super.viewDidLoad()
        tModel.delegate = self
        tModel.setNum(2)
    }
}

以上で基本的なMVCの実装は簡単にできます。

最後に

何かと問題点も指摘されているMVCなので今後はMVPやCleanArchitectureについても挑戦したいと思います。