先程コードを書いているとき、こんなことを思いました。
「クラスを配列でまとめているとき、あるclassが存在するときだけ特定の処理をしたいなあ」と。
具体的にはこんな具合です。
5個の異なるTableViewCellなどを配列として持たせておいて、〇〇Cellが含まれるときにだけ、配列の0番目に別のCellを追加したい
といった感じです。
サンプルコード
//Cellしか持たない配列を5つ用意する
final class A: UITableViewCell {}
final class B: UITableViewCell {}
final class C: UITableViewCell {}
final class D: UITableViewCell {}
final class E: UITableViewCell {}
// 今回0番目に差し込みたいCell
final class InsertCell: UITableViewCell {}
private var cellArray = [A(), B(), C(), D(), E()]
if cellArray.contains(where: { $0 is E }) { //Eが含まれる場合にInsertCellを差し込みたい
// 配列の0番目に追加する
cellArray.insert(InsertCell(), at: 0)
} else {
print("配列にEのCellが含まれない")
}
ここでもポイントはisになります。
isを用いることがインスタンスに対して型をチェックすることができます。
通常何か比較してチェックしたい場合はhoge == foo
と書きますが、クラスや構造体の比較に==
は基本的に行えません。(もちろん行う方法もありますがここでも説明は割愛します。)
そこでisを使用することで簡単に型チェックを行うことができるというわけです。