ios - 声明计算变量后,编译器开始提示类没有初始化器

标签 ios swift swift3

我创建了一个继承UITableViewCell的类:

class MyCell: UITableViewCell {
  override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
}

没有编译错误。然后,我声明了一个计算变量:

class MyCell: UITableViewCell {
   var student: Student{
       willSet {...}
   }
   ...
}

现在,编译器开始提示 Class 'MyCell' has no initializers。然后,我定义了一个空的初始值:

class MyCell: UITableViewCell {
       init(){}

       var student: Student{
           willSet {...}
       }
       ...
    }

错误仍然存​​在。为什么在声明计算变量后,编译器开始提示该错误以及如何消除该错误?

最佳答案

cellForRow... 中设置(非可选)数据模型项的 TableView 单元格中的推荐解决方案是隐式解包可选。

无需覆盖任何初始化程序。

class MyCell: UITableViewCell {

    var student: Student! {
        willSet {...}
    }

}

注意:

student 不是计算属性。属性观察器只能在存储的属性中使用。

关于ios - 声明计算变量后,编译器开始提示类没有初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46464546/

相关文章:

Swift 2 to 3 迁移核心数据 NSManagedObject 类

ios - APN token 能否/将会改变?

ios - 多个 UITextView 占位符

ios - iOS 12 上的过滤深度数据似乎已旋转

ios - 尝试在 Xcode 中运行脚本以获取 firebase 崩溃报告时出错

swift - 使 Swift Cocoa 应用在 OS X 10.11 启动时启动

ios - 无法使用 URLSession 下载图像

ios - 如何在 swift 3 中删除 Tabbar 项目

javascript - 当应用程序被禁用时,React Native 在特定时间显示消息

iOS:添加一个连续的监听器来观察服务器上的任何变化