swift3:按类名创建子类

时间:2017-10-16 11:32:29

标签: swift swift3

我有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的实例,但实例并没有变量的力量 - 它确实有年龄和名称

有人可以建议我哪里出错吗?

2 个答案:

答案 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

编写