Swift3でインスタンスが指定クラス・もしくは指定クラスを継承しているクラスであるか反映する「is」オペレーターがありますが
そのisオペレーターの右辺を変数にするにはどうしたらよいのでしょうか。
以下のようなコードがあり、変数vに入っている値がcheck変数に入っているクラスと同じ・もしくはcheck変数のクラスを継承しているかの判定を行いたいと思います。
swift
1class ROOT{} 2class A : ROOT{} 3class B : ROOT{} 4 5let v : ROOT = B() 6let check : ROOT.Type 7if true { // 実際は細かい条件 8 check = A.self 9}else{ 10 check = B.self 11} 12 13if v is check.Type { // ここのis文の右辺がcheck変数である 14 print("OK") 15}else{ 16 print("NG") 17}
右辺が変数ではない以下のパターンであれば、当然問題なく実行出来ます。
swift
1if is check B.Type{}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。