2
我想我正在努力与泛型。我想创建简单的UIView扩展来递归地查找在函数参数中传递的类的超级视图。我希望该函数返回包含显式为nil的可选项,或作为提供的类的实例可见的对象。Swift找到泛型的给定类的超级视图
extension UIView {
func superviewOfClass<T>(ofClass: T.Type) -> T? {
var currentView: UIView? = self
while currentView != nil {
if currentView is T {
break
} else {
currentView = currentView?.superview
}
}
return currentView as? T
}
}
任何帮助非常感谢。
到底是什么问题?你的代码看起来应该可以工作。你提到你正试图以递归方式做这件事,但你的解决方案是迭代的。您是否试图将该代码转换为递归版本?你可以包括你的尝试吗? –
对不起,我的错误,问题的递归部分是完全不相关的,我为代码简单化做了迭代,关键部分是泛型。其实......你是对的,这段代码有效,我不知道为什么它之前失败了。为了在这里发布它的目的,我对它进行了一些清理,看起来像是通过清理来修复它)。 –
误读superview作为超类大声笑。 – Alexander