ios – Swift中的错误:属性’self.circle1’在super.init调用时没有初始化?

ios – Swift中的错误:属性’self.circle1’在super.init调用时没有初始化?,第1张

概述我是编程的新手,我正在尝试在 Swift中编写一个tic-tac-toe应用程序,这个错误阻止我运行app:属性’self.circle1’未在super.init调用时初始化. 该应用程序尚未完成,但我没有看到现有代码中的错误.请再次详细解释我的建议,我是一个初学者.谢谢! 我的代码: import UIKitclass ViewController: UIViewController { 我是编程的新手,我正在尝试在 Swift中编写一个tic-tac-toe应用程序,这个错误阻止我运行app:属性’self.circle1’未在super.init调用时初始化.

该应用程序尚未完成,但我没有看到现有代码中的错误.请再次详细解释我的建议,我是一个初学者.谢谢!
我的代码:

import UIKitclass VIEwController: UIVIEwController {    //Initializing all imgs as variables:    @IBOutlet strong var circle1: UIImageVIEw    @IBOutlet strong var circle2: UIImageVIEw    @IBOutlet strong var circle3: UIImageVIEw    @IBOutlet strong var circle4: UIImageVIEw    @IBOutlet strong var circle5: UIImageVIEw    @IBOutlet strong var circle6: UIImageVIEw    @IBOutlet strong var circle7: UIImageVIEw    @IBOutlet strong var circle8: UIImageVIEw    @IBOutlet strong var circle9: UIImageVIEw    @IBOutlet strong var circleBtn1: UIbutton    @IBOutlet strong var circleBtn2: UIbutton    @IBOutlet strong var circleBtn3: UIbutton    @IBOutlet strong var circleBtn4: UIbutton    @IBOutlet strong var circleBtn5: UIbutton    @IBOutlet strong var circleBtn6: UIbutton    @IBOutlet strong var circleBtn7: UIbutton    @IBOutlet strong var circleBtn8: UIbutton    @IBOutlet strong var circleBtn9: UIbutton    @IBOutlet strong var resetBtn: UIbutton    @IBOutlet strong var ResultsLabel: UILabel    //Creating variables:    var plays = Dictionary<Int,Int>()    var done = false    var aIDecIDing = false    //Function that says what to do if a UIbutton is clicked:    @IBAction func UIbuttonClicked(sender:UIbutton) {        ResultsLabel.hIDden = true        if !plays[sender.tag] && !aIDecIDing && !done {        setimgforCircle(sender.tag,player:1)        }    //Executing these functions:        checkforWin()        aiTurn()    }    //Function that sets an X or O in the proper circle depending on player:    func setimgforCircle(spot:Int,player:Int) {        var playerMark = player == 1 ? "x" : "o"        plays[spot] = player        switch spot {        case 1:            circle1.image = UIImage(named: playerMark)        case 2:            circle2.image = UIImage(named: playerMark)        case 3:            circle3.image = UIImage(named: playerMark)        case 4:            circle4.image = UIImage(named: playerMark)        case 5:            circle5.image = UIImage(named: playerMark)        case 6:            circle6.image = UIImage(named: playerMark)        case 7:            circle7.image = UIImage(named: playerMark)        case 8:            circle8.image = UIImage(named: playerMark)        case 9:            circle9.image = UIImage(named: playerMark)        default:            circle2.image = UIImage(named: playerMark)        }    }    //Function that sees if certain paths of circles have the same mark    func checkforWin() {    var whoWon = ["Lost":0,"Won":1]        for (key,value) in whoWon {            if ((plays[1] == value && plays[2] == value && plays[3] == value) || //across top row            (plays[4] == value && plays[5] == value && plays[6] == value) || //across mIDdle row            (plays[7] == value && plays[8] == value && plays[9] == value) || //across bottom row            (plays[1] == value && plays[4] == value && plays[7] == value) || //down left column            (plays[2] == value && plays[5] == value && plays[8] == value) || //down mIDdle column            (plays[3] == value && plays[6] == value && plays[9] == value) || //down right column            (plays[1] == value && plays[5] == value && plays[9] == value) || //diagonal going right            (plays[7] == value && plays[5] == value && plays[3] == value)) { //diagonal going left                ResultsLabel.hIDden = false                ResultsLabel.text = "You \(key)!"            }        }    }    func aiTurn() {    }    overrIDe func vIEwDIDLoad() {        super.vIEwDIDLoad()        // Do any additional setup after loading the vIEw,typically from a nib.    }    overrIDe func dIDReceiveMemoryWarning() {        super.dIDReceiveMemoryWarning()        // dispose of any resources that can be recreated.    }}
解决方法 只需在声明末尾添加问号或感叹号:

@IBOutlet strong var circle1: UIImageVIEw?

使用Swift,每个变量都必须在调用super.init之前进行初始化.在这种情况下,在加载Storyboard或nib之前,不会初始化变量,而是在调用类init方法之后.

circle1变量的类型;除了是UIImageVIEw之外;将是一个可选项,因此需要在其声明中指明.因此,您需要打开变量以使用问号或感叹号访问其值.

let prax = circle1?.image

要么

if circle1 {   // Now you're sure the object exists   let prax = circle1!.image}

(Xcode6 Beta-4似乎解决了这个问题,并在代码编辑器中自动提供“click to fix”错误按钮.)

总结

以上是内存溢出为你收集整理的ios – Swift中的错误:属性’self.circle1’在super.init调用时没有初始化?全部内容,希望文章能够帮你解决ios – Swift中的错误:属性’self.circle1’在super.init调用时没有初始化?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1057451.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存