Swift で NSMutableDictionaryのキーと値をクラスまたはstructの変数（キー）にセットして使用したい


Swift5を使用しています。  
以下のようなKyeが異なるNSMutableDictionaryの  
typeの値ごとにクラス、またはstructの変数にセットさせたいと思っているのですが、  
以下のようにswitch文で処理を分けて行うしか手法はないでしょうか？

[code]

    class data1 {
      var type: String
      var id: Int
      var size: Int
    
      init(type: String, id: Int, size: Int) {
        self.type = type
        self.name = name
        self.size = size
      }
    }
    
    class data2 {
      var type: String
      var name: String
      var size: String
    
      init(type: String, name: String, size: String) {
        self.type = type
        self.name = name
        self.size = size
      }
    }
    
    データ１
    {
        type = "case1"；
        id = 1
        size = 200
    }
    データ２
    {
        type = "case2"；
        name = "testerA"
        code = "X0020"
    }
    
    
    if let dic = obj as? NSMutableDictionary {
    
        if let typeValue = dic.value(forKey: "type") as? String {
            print("typeValue:", typeValue)
            switch key {
                case "case1":
                    let id = dic.value(forKey: "id") as? Int
                    let size = dic.value(forKey: "size") as? Int
                    data1(type: type, id: id, size: size)
                //・・・処理・・・
                case "case2":
                //・・・処理・・・
                ~~~~
        }
    }
    
[/code]

