Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift中出错,需要帮助:property';自我循环1';在super.init调用时未初始化_Ios_Swift - Fatal编程技术网

Ios Swift中出错,需要帮助:property';自我循环1';在super.init调用时未初始化

Ios Swift中出错,需要帮助:property';自我循环1';在super.init调用时未初始化,ios,swift,Ios,Swift,我是编程新手,在我的Tic-tac-toe游戏中遇到了这个错误:propertyself.circle1未在super.init调用中初始化 我已经控制并连接了我的UIImages和按钮等等,我还尝试从这些语句中去掉strong(使出口变弱),但我仍然无法运行我的应用程序。发生什么事? 我的代码: import UIKit class ViewController: UIViewController { //Initializing all imgs as variables: @IBO

我是编程新手,在我的Tic-tac-toe游戏中遇到了这个错误:property
self.circle1
未在
super.init
调用中初始化

我已经控制并连接了我的
UIImage
s和按钮等等,我还尝试从这些语句中去掉
strong
(使出口变弱),但我仍然无法运行我的应用程序。发生什么事? 我的代码:

import UIKit

class 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 says 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.
}
}
导入UIKit
类ViewController:UIViewController{
//将所有IMG初始化为变量:
@IBOutlet强var循环1:UIImageView
@IBOutlet强var循环2:UIImageView
@IBOutlet强var循环3:UIImageView
@IBOutlet强var循环4:UIImageView
@IBOutlet强var循环5:UIImageView
@IBOutlet强var循环6:UIImageView
@IBOUTLE强var循环7:UIImageView
@IBOutlet强var循环8:UIImageView
@IBOutlet强var循环9:UIImageView
@IBOutlet强var circleBtn1:UIButton
@IBOutlet强var circleBtn2:UIButton
@IBOutlet强var circleBtn3:UIButton
@IBOutlet强var circleBtn4:UIButton
@IBOutlet强var circleBtn5:UIButton
@IBOutlet强var循环TN6:UIButton
@IBOutlet强var循环TN7:UIButton
@IBOutlet强var循环TN8:UIButton
@IBOutlet强var循环TN9:UIButton
@IBOutlet强var重置按钮
@IBOutlet强var结果标签:UILabel
//创建变量:
var=Dictionary()
var done=false
var-aiDeciding=false
//用于说明单击UIButton时要执行的操作的函数:
@iAction func UIButton已选中(发件人:UIButton){
ResultsLabel.hidden=true
如果!播放[sender.tag]&&&!辅助决策&&!完成{
setImgforCircle(sender.tag,player:1)
}
//执行这些功能:
checkforWin()
艾特恩()
}
//表示根据玩家在适当的圆圈内设置X或O的函数:
func setImgforCircle(点:Int,玩家:Int){
var playerMark=player==1?“x”:“o”
扮演者
开关点{
案例1:
circle1.image=UIImage(名称:playerMark)
案例2:
circle2.image=UIImage(名称:playerMark)
案例3:
circle3.image=UIImage(名称:playerMark)
案例4:
circle4.image=UIImage(名称:playerMark)
案例5:
circle5.image=UIImage(名称:playerMark)
案例6:
circle6.image=UIImage(名称:playerMark)
案例7:
circle7.image=UIImage(名称:playerMark)
案例8:
circle8.image=UIImage(名称:playerMark)
案例9:
circle9.image=UIImage(名称:playerMark)
违约:
circle2.image=UIImage(名称:playerMark)
}
}
//函数,用于查看圆的某些路径是否具有相同的标记
func checkforWin(){
var whowen=[“丢失”:0,“赢得”:1]
whowen中的(键、值){
如果((播放[1]==value&&plays[2]==value&&plays[3]==value)| |//穿过顶行
(播放[4]==value&&plays[5]==value&&plays[6]==value)| |//穿过中间行
(播放[7]==value&&plays[8]==value&&plays[9]==value)| |//穿过最下面一行
(播放[1]==值和播放[4]==值和播放[7]==值)| |//左下列
(播放[2]==value&&plays[5]==value&&plays[8]==value)| |//下中列
(播放[3]==值和播放[6]==值和播放[9]==值)| |//右下列
(播放[1]==数值和播放[5]==数值和播放[9]==数值)| |//对角线向右移动
(播放[7]==value&&plays[5]==value&&plays[3]==value)){//向左走
ResultsLabel.hidden=false
ResultsLabel.text=“您\(键)!”
}
}
}
func aiTurn(){
}
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后,通常从nib执行任何其他设置。
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
}

首先,没有理由让所有这些
强大。删除它们。全部

然后,如果您不想在init()方法中初始化它们,那么您可能应该使所有这些都成为可选的。因此,我们可以这样说:

@IBOutlet strong var circle1: UIImageView
并将其改为:

@IBOutlet var circle1: UIImageView!

.

一定要去掉
strong
s——视图由它们的superview强控制,因此您希望视图控制器弱控制这些变量。如果没有
strong
声明,仍然会出现相同的错误?不可能。。。当然,相同的用户,相同的问题抱歉,是的,通过去掉“strong”s,错误消失了,但我现在在我的出口列表顶部的绿色栏中看到了这条消息:“Thread 1:breakpoint 1.4”当我尝试运行我的应用程序时,模拟器是黑色的。