MyBaseCell クラスから複数のセルを継承しました。私の ViewController クラスでは、これらのセルにアクセスし、それらを MyBaseCell インスタンスとして型キャストし、エラー ラベルに応答するかどうかを確認してから、そのラベルにエラー メッセージを割り当てます。respondsToSelector
メソッドで文字列リテラルを使用するのは簡単でした。
これはViewControllerクラスの既存のコードで、警告を出しています。
let cell = cell as? MyBaseCell
if cell?.respondsToSelector("errorLabel") == true {
let errorLabel = cell!.errorLabel as? UILabel
errorLabel?.text = "Some Error Message"
}
XCode 7.3 は、Objective-C セレクター 'errorLabel' で宣言されたメソッドがないという警告を出します。に変更しようとするとrespondsToSelector(#selector(MyBaseCell.errorLabel))
、「Type MyBaseCell has no member errorLabel」というエラーが発生します。これは、errorLabel が MyBaseCell のサブクラスの一部に含まれているためです。
ViewController クラスの新しいコードで、構文エラーが発生しています。
let cell = cell as? MyBaseCell
if cell?.respondsToSelector(#selector(MyBaseCell.errorLabel)) == true {
let errorLabel = cell!.errorLabel as? UILabel
errorLabel?.text = "Some Error Message"
}