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)