同胞的意見類的我有一個查找斯威夫特
class Fancy:UIButton
,我想找到它們是同一類的所有兄弟姐妹的意見。
我這樣做
for v:UIView in superview!.subviews
{
if v.isKindOfClass(Fancy)
{
// you may want... if (v==self) continue
print("found one")
(v as! Fancy).someProperty = 7
(v as! Fancy).someCall()
}
}
它似乎在測試中可靠地工作(沒有兄弟姐妹很多,等)
但是有一個很大的「!」在那裏。
這是Swift中的正確方法嗎?
BTW這裏是基於偉大的答案擴展做下面一個很酷的方式
Pass in a type to a generic Swift extension, or ideally infer it
強制解包是危險的,應該避免。如果失敗,就會崩潰。你的內在力量 - 解開'(v!!Fancy)'是保存,但不雅。 –
嗨@DuncanC,你很確定它是安全的? (我們稍後可以處理的Inelegant :)) – Fattie
內部是強制向下投射,而不是強制解開。我錯過了。是的,這是安全的,因爲你有它在一個if語句中檢查v –