如何根据扩展应用的类型指定泛型?

时间:2016-08-23 17:44:05

标签: swift generics

考虑以下代码,该代码基于与类同名的nib / xib加载视图...

extension UIView
{
    static func loadFromNib<T:UIView>() -> T
    {
        let nibName = String(T)
        let bundle = NSBundle(forClass: self)

        return bundle.loadNibNamed(nibName, owner: nil, options: nil)[0] as! T
    }
}

为了使用它,你需要这样做......

let view:SomeView = UIView.loadFromNib()

这样,T从其分配的变量推断为SomeView

但是,如果可能的话,我正试图解决这个问题......

let view = SomeView.loadFromXib()

...调用类SomeView中的loadFromNib类型被调用,但我无法弄清楚如何定义T相对于{{}的约束1}}来支持它。

这可能吗?

0 个答案:

没有答案