当前位置:  开发笔记 > 编程语言 > 正文

如何在Swift中用它创建类和实例对象的数组?

如何解决《如何在Swift中用它创建类和实例对象的数组?》经验,为你挑选了1个好方法。

我之前尝试过问这个问题,但没有明确表达我的问题,所以我会在这里再试一次.我也注意到一个非常相似的声音问题,但它要求完全不同的东西.

我有以下代码:

class Base {
    func launch(code1: Int, code2: Int) { ... }
}

class A: Base {}
class B: Base {}
class C: Base {}

let classes = [A.self, B.self, A.self, B.self, C.self]
for cls in classes {
    let obj = ???
}

我想cls在循环中实例化一个类型的对象并用它做一些事情.我可能在数组中有重复项,如图所示.我应该用什么来代替???能够实例化正确的对象?



1> R Menke..:

您所需要的只是一种required init创建实例的方法,该实例将在Types您希望其工作的所有内容之间共享.一个protocol保存的init方法会做得很好.

显然,当init不需要参数时,这最简单.

缺点是您需要向下转换生成的实例.

protocol ZeroParamaterInit {
    init()
}

class Base : ZeroParamaterInit {
    func launch(code1: Int, code2: Int) {  }
    required init() {

    }
}

class A: Base {}
class B: Base {}
class C: Base {}

let classes : [ZeroParamaterInit.Type] = [A.self,B.self]
var instances : [Any] = []

for cls in classes {

    let instance = cls.init()
    instances.append(instance)

}

for instance in instances {

    if let test = instance as? A {
        print("A")
    }
    if let test = instance as? B {
        print("B")
    }
    if let test = instance as? C {
        print("C")
    }
}

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有