在Swift中查找类的兄弟视图

Fat*_*tie 2 ios swift

我有一个

  class Fancy:UIButton
Run Code Online (Sandbox Code Playgroud)

我想找到同一类的所有兄弟视图.

我这样做

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()
        }
    }
Run Code Online (Sandbox Code Playgroud)

它似乎在测试中可靠地工作(没有兄弟姐妹,许多等)

但是有很多"!" 在那里.

这是Swift的正确方法吗?


顺便说一句,这是一个很酷的方式来实现扩展基于下面的好答案

将类型传递给通用Swift扩展,或者理想地推断它

Luc*_*tti 6

那么使用函数式编程呢?

self.superview?
    .subviews
    .flatMap { $0 as? Fancy }
    .filter { $0 != self }
    .forEach { fancy in
        fancy.someProperty = 4
        fancy.someMethod()
    }
Run Code Online (Sandbox Code Playgroud)


Cod*_*ent 5

关于什么:

for v in superview!.subviews
{
    if let f = v as? Fancy{
        print("found one")
        f.someProperty = 7
        f.someCall()
    }
}
Run Code Online (Sandbox Code Playgroud)