Swift 无法将类型“String.type”的值转换为super.init的预期参数类型“String”
嘿,伙计们,这是一个非常简单的问题,对这门语言来说很陌生。不了解当前代码的错误,以及为什么会出现以下错误。尝试了一切,但没有理解Swift 无法将类型“String.type”的值转换为super.init的预期参数类型“String”,swift,oop,Swift,Oop,嘿,伙计们,这是一个非常简单的问题,对这门语言来说很陌生。不了解当前代码的错误,以及为什么会出现以下错误。尝试了一切,但没有理解 class RPGCharacter { var maxHP: Int var maxSP: Int var currentHP: Int var currentSP: Int var type: String var currentArmor: Armor var currentWeapon: Weapon var name: String var bannedWe
class RPGCharacter
{
var maxHP: Int
var maxSP: Int
var currentHP: Int
var currentSP: Int
var type: String
var currentArmor: Armor
var currentWeapon: Weapon
var name: String
var bannedWeapon: [String]
var bannedArmor: [String]
init(nme: String)
{
name = nme
maxHP = 0
maxSP = 0
currentHP = 0
currentSP = 0
type = "undefined"
currentArmor = NoArmor()
currentWeapon = NoWeapon()
bannedArmor = []
bannedWeapon = []
}
// skipped some methods not relevant, plz ignore the missing bracket
class Fighter: RPGCharacter
{
override init(nme: String)
{ super.init(nme: String) //error line Cannot convert value of type 'String.Type' to expected argument type 'String'
maxHP = 40
maxSP = 0
currentHP = 40
currentSP = 0
type = "fighter"
currentArmor = NoArmor()
currentWeapon = NoWeapon()
name = nme
bannedArmor = []
bannedWeapon = []
}
}改变
super.init(nme: String)
到
当您向init调用传递参数时,需要传递一个值。编译器会给您一个错误,因为您传递的是String.Type而不是String参数。这是因为您的超类方法initnme:String有一个名为nme的参数,它是字符串的一种类型。如果愿意,可以在super call super.initnme:nme中传递nme值,而不是传递其类型 如果您需要有关初始化如何工作以及如何在Swift中重写init方法的详细说明,请阅读
super.init(nme: nme)