xcode8 教程编码问题,方法 'setplayer' 出错

xcode8 coding issue with tutorial getting error for method 'setplayer'

所以我正在尝试学习教程,我完成了大部分教程,但我仍然不断收到错误消息,并且不知道如何修复它们。

我收到一条错误消息

method'setplayer' with Objective-C selector 'setPlayer:' conflicts with setter for 'player' with the same Objective-C selector

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
        }

    }
}

有源代码的回答会非常感谢。

解法:

只需将方法从 setPlayer 重命名为 placePlayer 之类的其他名称即可。

原因:

由于 Swift 和 Objective-C 可以互操作,因此您的 Swift 代码的 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
        }

    }
}