在Swift中基于泛型的返回类

时间:2018-11-19 12:59:46

标签: ios iphone swift generics

我有两个自定义类对象。我必须显示一个视图,该视图根据我们传递的类对象从两个对象中读取数据。

enter image description here

我该如何实现?

谢谢

3 个答案:

答案 0 :(得分:0)

可以将myObject设置为AnyObject,然后可以检查对象来自A类还是B类。

class viewc : UIViewController {
    var myObject: AnyObject?

    override func viewDidLoad() {
        super.viewDidLoad()
        if let object = myObject as? ClassA {
            print("Object is of class- ClassA")
        }else if let object = myObject as? ClassB {
            print("Object is of class- ClassB")
        }
    }
}

答案 1 :(得分:0)

您不能像var object = <T>()那样做,因为它的格式不正确,或者像var object = T()那样,因为非标称类型'T'不支持显式初始化。

您可以像这样使用它:-

class ABC<T>: UIViewController{

    var object: T? = nil
}

希望它会有所帮助:)

答案 2 :(得分:0)

您可以使用通用类型。

class ControllerTimeline<T>: UIViewController {

    var myObject :T?
    ...
}

如果您需要T有一些约束(例如:只能是NSObject)

class ControllerTimeline<T: NSObject>: UIViewController {

    var myObject :T?
    ...
}

如果只想使用A或B,则可以为A和B +创建一个公共父代。

class ControllerTimeline<T: C>: UIViewController {
...

或者让A和B实现通用协议并输入类似的内容

class ControllerTimeline<T: MyProtocol>: UIViewController {
...