类没有初始化器

时间:2015-04-16 17:51:38

标签: ios cocoa-touch swift

我收到此错误,但我不知道如何修复它

class GameView2: UIViewController {

    @IBOutlet weak var resetButton: UIButton!
    @IBOutlet weak var resultLabel: UILabel!
    @IBOutlet weak var player1ScoreLabel: UILabel!
    @IBOutlet weak var player2ScoreLabel: UILabel!

    var selectedPlayer: Int!
    var currentPlayerMove: Int
    var previousPlayerMove: Int!
    var player1Score: Int
    var player2Score: Int

1 个答案:

答案 0 :(得分:4)

在swift中,必须初始化所有非可选的存储属性,无论是内联还是初始化。

在您的班级中,有6个可选属性(全部定义为隐式展开,以!结尾的属性)和3个非可选属性(currentPlayerMoveplayer1Score和{{1} })。你应该内联初始化它们:

player2Score

或在初始化程序中,或使它们成为可选项,或使它们隐式展开选项:

var currentPlayerMove: Int = 0
var player1Score: Int = 0
var player2Score: Int = 0

并在使用之前初始化 - 一个好地方是var currentPlayerMove: Int! var player1Score: Int! var player2Score: Int!

viewDidLoad

一些指导原则:

  • 如果属性可以是
  • ,请使用普通的可选项
  • 如果属性不是nil,则使用隐式展开的可选项,但是您无法初始化内联或初始化程序 - 警告:当它处于零时隐式解包导致运行时异常,请务必在使用前正确初始化
  • 如果属性不是nil,则使用非可选项,并且可以初始化内联或初始化程序 - 这应该始终是首选解决方案,而不是在可能的情况下隐式解包