尝试为我的iOS Swift应用程序创建自定义类时出现错误:


  从初始化程序返回之前调用了Super.init





  永远不会被执行


这是我的代码:

class CardTableViewCell: UITableViewCell {

    //Vars
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var subtitleLabel: UILabel!
    @IBOutlet weak var thumbImage: UIImageView!
    @IBOutlet weak var detailsLabel: UILabel!
    @IBOutlet weak var costLabel: UILabel!

    init(name: String){
        self.nameLabel.text = name
    } //<-- Error here

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
        super.init(coder:aDecoder) //<--- Error Here
    }

}


我在这里做错了什么?之前,我从未不必将init Coder方法添加到自定义类。

我已经部分修复了代码,请参见下文。

更新的代码:
    类CardTableViewCell:UITableViewCell {

    //Vars
    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var subtitleLabel: UILabel!
    @IBOutlet weak var thumbImage: UIImageView!
    @IBOutlet weak var detailsLabel: UILabel!
    @IBOutlet weak var costLabel: UILabel!

    init(name: String, subtitle: String) {
        super.init(style: UITableViewCellStyle.Default, reuseIdentifier: name)
        self.nameLabel.text = name
        self.subtitleLabel.text = subtitle
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

var lers = CardTableViewCell(name: "Happy", subtitle: "Gilmore") //<-- ERROR HERE
print(lers.subtitleLabel.text)


错误返回:


  执行被中断,原因为EXC_BAD_INSTRUCTION
  (代码= EXC_I386_INVOP,子代码= 0x0)


我不了解初始化代码的方式,内容或原因。如果有人可以向我指出有关Swift 2的适当文档,请向我展示。苹果的所有开发文档都很可怕。

最佳答案

改成:

init(name: String) {
    super.init(style: UITableViewCellStyle.Default, reuseIdentifier: name)
    self.nameLabel.text = name
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

关于swift - 不正确的Swift 2初始化类方法语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33285015/

10-16 11:07