2017-04-17 3 views
2

特に、この非常に広範な答えhereが助けていない(私はここに同様の質問に対する様々な答えを見てきましたが、これは違うスイフト3:親のメンバーシップを除外する*オブジェクトのクラスを指定する*

私に説明してみましょう:あなたは、親クラスの範囲内にある場合は、どのようにすることができますあなた -

オブジェクトを正確に、このクラスのインスタンスではなく、そのクラス子供のクラスの任意のインスタンスであることを排除するコードの例 - コードは1行だけで:

class Subchild: Child { 
    //blabla 
} 

class Child: Parent { 
    //blabla 
} 

class Parent { 
    //....could be NSObject or generic Swift class 
    func iAmNotARealParent() -> Bool { 
     enter code here 
    }  
} 

..?私ができるように:

let myObject:Subchild = ... 
myObject.iAmNotARealParent() //<--- returns true 

let anotherObject:Child = ... 
anotherObject.iAmNotARealParent() //<---- returns true 

let thirdObject:Parent = ... 
thirdObject.iAmNotARealParent() //<---- returns false 

私は特に、実際のUIView、またはその多くのサブクラス(UIButtonなど)であるかどうかをUIView内部で識別しようとしています。その後、私は明示的にすべての子クラスを除外しなければならないので、

if self is UIBUtton {return false} 
if self is UIScrollView {return false} 

など: 私ははこのようにそれをチェックする必要がありますする必要はないありません。

どうすればよいですか? Swiftに* exactClassOf/exactTypeOf *関数がありますか?むしろ種類の平等をチェック

if type(of: self) == Parent.self { 
    // this only runs for exact type matches, not subclasses 
} 

:私はあなたが好きなものを使用することができます(つまり、どれ用)の両方スウィフト由来とNSObjectの派生クラスのソリューション

答えて

1

を探しています注意してくださいインスタンスの多形適合性(すなわちself is Parent

+0

ああ - エレガント!ありがとう! – Averett

関連する問題