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