import Foundation
class Student: NSObject
{
var name: String
var year: Int
var major: String
var gpa : String
init(name:String, year:Int, major:String, gpa:String)
{
self.name = name
self.year = year
self.major = major
self.gpa = gpa
}
convenience init()
{
//calls longer init method written above
}
}
-
错误显示在便利init的线上
覆盖声明需要'覆盖'关键字
我已经尝试了谷歌搜索和阅读Swift初始化程序的指南,但似乎他们能够使他们的初始化程序正常而不会覆盖任何东西。
答案 0 :(得分:4)
init
是NSObject
的指定初始值设定项。如果覆盖它,则必须将其标记为override
并调用超类指定的初始化程序。这遵循normal rules for initializer inheritance。
答案 1 :(得分:-1)
看起来你的便利初始化程序是空的,这就是你得到错误的原因。例如,如果您将其更改为:
convenience init() {
self.init(name: "", year: 0, major: "nothing", gpa: "4.0")
}
错误会消失。
我想知道你为什么要设置Student来继承NSObject。对你的班级来说,这看起来并不合适。