为什么我现在必须覆盖 Swift 中的 init?
Why do I have to override my init in Swift now?
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
}
}
--
错误显示在便利初始化行
Overriding declaration requires an 'override' keyword
我已经尝试使用谷歌搜索并阅读 Swift 中有关初始化程序的指南,但似乎他们能够在不覆盖任何内容的情况下使他们的初始化程序正常工作。
您的便捷初始化程序似乎是空的,这就是您收到错误的原因。例如,如果您将其更改为:
convenience init() {
self.init(name: "", year: 0, major: "nothing", gpa: "4.0")
}
错误会消失。
我想知道你为什么要设置Student继承自NSObject。您的 class.
看起来没有必要
init
是 NSObject
的指定初始值设定项。如果覆盖它,则必须将其标记为 override
并调用超类指定的初始化程序。这遵循 normal rules for initializer inheritance.
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
}
}
--
错误显示在便利初始化行
Overriding declaration requires an 'override' keyword
我已经尝试使用谷歌搜索并阅读 Swift 中有关初始化程序的指南,但似乎他们能够在不覆盖任何内容的情况下使他们的初始化程序正常工作。
您的便捷初始化程序似乎是空的,这就是您收到错误的原因。例如,如果您将其更改为:
convenience init() {
self.init(name: "", year: 0, major: "nothing", gpa: "4.0")
}
错误会消失。
我想知道你为什么要设置Student继承自NSObject。您的 class.
看起来没有必要init
是 NSObject
的指定初始值设定项。如果覆盖它,则必须将其标记为 override
并调用超类指定的初始化程序。这遵循 normal rules for initializer inheritance.