我有2个类 - 一个person
超类和一个SuperPerson
子类:
class person {
var name: String
var age : Int
func instance(){}
}
class SuperPerson : Person {
var power : Int
}
我有className = "SuperPerson"
我正在使用代码:
let superPerson = NSClassFromString(className) as? Person.Type
尝试创建SuperPerson
的实例,但实例并没有变量的力量 - 它确实有年龄和名称
有人可以建议我哪里出错吗?
答案 0 :(得分:0)
您的代码应该是这样的:
class Person {
var name: String = ""
var age : Int = 0
func instance(){}
}
class SuperPerSon : Person {
var power : Int = 0
}
现在初始化应该是这样的
let superPerson = SuperPerSon()
然后检查它是否具有所有属性名称,年龄,功率。
答案 1 :(得分:0)
你错误地关注对象投射,你向下投射到人类,然后尝试访问 SuperPerSon 的属性,我做了您的代码更正请参考以下代码。
class Person {
var name: String?
var age : Int?
func instance(){}
init() {
}
}
class SuperPerSon : Person {
var power : Int?
override init() {
super.init()
}
}
//let className = "SuperPerson"
//let superPerson = NSClassFromString(className) as? Person.Type :this was your old line
//Corrected new line is
let superPerson = SuperPerSon()
superPerson.power = 10
print(superPerson.power)
PS:此代码用swift 4,xcode 9
编写