2017-04-23 2 views
0

私はチュートリアルに従おうとしていますが、ほとんど完了しましたが、まだエラーメッセージが表示されています。チュートリアルでxcode8のコーディングに関する問題が発生しました。メソッド 'setplayer'のエラーが発生しました

IはsetPlayer「Objective-Cのセレクタと '

method'setplayer読み出しエラーメッセージ得る:同じObjective-Cのセレクタとプレイヤー '' 用セッターと競合 '

import UIKit 

class TTTImageView: UIImageView { 

    var player:String? 
    var activated:Bool! = false 

    func setPlayer (_ _player:String){ "<-- error message for this line of code" 
     self.player = _player 

     if activated == false{ 
      if _player == "x"{ 
       self.image = UIImage(named: "x") 
      }else{ 
       self.image = UIImage(named: "o") 
      } 
      activated = true 
     } 

    } 
} 

ソースコードでの回答はすばらしいおかげです。

+0

エラーメッセージは正確にあなたの問題を説明するようです。プロパティ "player"のセッターは "setPlayer"と呼ばれます。 – gnasher729

答えて

0

ソリューション:

だけsetPlayerからplacePlayerのような何か他に方法の名前を変更し、あなたは大丈夫です。

理由:スウィフトとObjective-Cは、相互運用可能なので

、あなたのスウィフトコードのObjective-Cの翻訳も同様に有効である必要があります。 Objective-Cでは、プロパティの名前がsetで、その後にプロパティの名前が自動的に生成されます。関数との競合が関数を自動的に生成するため、エラーが発生します。

コード:

class TTTImageView: UIImageView { 

    var player: String? 
    var activated: Bool = false 

    func placePlayer(_ _player: String) { 
     self.player = _player 

     if activated == false { 
      if _player == "x" { 
       self.image = UIImage(named: "x") 
      } else { 
       self.image = UIImage(named: "o") 
      } 
      activated = true 
     } 

    } 
} 
+1

ありがとうありがとうございました:) – john

+0

私のソリューションがうまくいけば、それを「受け入れられた」とマークして、他の人が同じ問題に直面した場合、すぐに解決策を見つけることができます。 – nathan

関連する問題