从泛型类型转换为不相关类型的子类始终失败

时间:2017-06-12 08:16:00

标签: ios swift generics casting

我有一个派生自泛型类的类。

angular
  .module('app', [])
    .controller('DateController', DateController)

function DateController($scope) {
  var vm = this;
  vm.events = [
    {
        "name" : "sunday first event", 
      "date" : moment('11/06/2017 11:00').format("DD-MM-YYYY HH:mm")
    },
    {
        "name" : "sunday third event", 
      "date" : moment('11/06/2017 16:00').format("DD-MM-YYYY HH:mm")
    },
    {
        "name" : "sunday late event", 
      "date" : moment('11/06/2017 21:00').format("DD-MM-YYYY HH:mm")
    },
    {
        "name" : "sunday second event", 
      "date" : moment('11/06/2017 12:00').format("DD-MM-YYYY HH:mm")
    }    
  ];
}

还有另一个来自open class Model<T>: BaseModel where T: SomeData { } 的类。

SomeData

现在我有一个类作为许多模型的基类。

open class NetworkData: SomeData {
}

有两个从ParentModel派生的子类。

open class ParentModel: Model<NetworkData> {
}

还有许多其他类来自Model泛型类型。 在其中一种情况中,我想将此泛型类型用作函数参数,然后将其类型转换为专门化类。

我已经完成了以下代码来实现目的

open class SonModel: ParentModel {
}

open class DaughterModel: ParentModel {
}

然而,在线

func someName<T: SomeData>(model: Model<T>) {
    guard let model = model as? DaughterModel else {
        //Some code here
    }
    //Main logic goes here
}

我收到以下错误

  

从'Model'转换为无关类型'DaughterModel'总是失败。

如何修复错误?非常感谢任何帮助。

0 个答案:

没有答案