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の派生クラスのソリューション
ああ - エレガント!ありがとう! – Averett