4
我有兩個協議Valid
和Resetable
以及inputViews
的數組,其類型爲[Valid]
。這一切都很好。所以,現在我已經得到了我的Resetable
協議:無法將陣列成員向下排協議類型
protocol Resetable: class {
func reset()
}
現在,inputViews
裏面的一切也符合Resetable
協議,所以我想要做的基本上是循環遍歷每個部件上叫reset()
。如果我這樣做,那麼它會工作:
for input in inputViews {
(input as! Resetable).reset()
}
,但我已經擴展Array
下列要求:
extension Array where Element:Resetable {
func resetAll() {
forEach({ $0.reset() })
}
}
所以,我真的希望能夠做的就是垂頭喪氣inputViews
完全和調用resetAll()
。
我想:
let resetableViews = inputViews.map({ $0 as! Resetable })
resetableViews.resetAll()
但它說Using Resetable as a concrete type conforming to Resetable is not supported
我如何使用resetAll()
實現這一目標?
重置實際上有兩個T的,像拼寫遺忘/令人遺憾,但不像可刪除/耗竭,或銷售/袖珍。 – Jessy
比較http://stackoverflow.com/questions/33112559/protocol-doesnt-conform-to-itself。 –