该应用程序尚未完成,但我没有看到现有代码中的错误.请再次详细解释我的建议,我是一个初学者.谢谢!
我的代码:
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调用时没有初始化?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)