ViewController中具有泛型的可选对象

时间:2017-06-13 10:08:07

标签: ios swift

不确定如何指定我的问题。所以这是一个例子:

final class MyClass<T: MyProtocol>: NSObject {
    init(something: Something<[T]>) { ... }
}

此对象(MyClass)将位于ViewController

final class MyViewController: UIViewController {
    //Should be optional, because I will assing myObject in prepareForSegue
    //And I will initialize MyClass with different Objects,
    //that implement MyProtocol
    var myObject: MyClass?
}

但我必须指定MyClass泛型类型,但我不会在init期间知道。 所以我的问题是可能有一个带有泛型的可选对象,将在生命周期的后期指定吗?

编辑。我认为如果不在init中指定Generic类型,就无法实现我想要的目标。

1 个答案:

答案 0 :(得分:0)

我认为你想要一个既是类又是协议的变量。这只能在Swift 4中使用当前语法:

let myObject: MyClass & MyProtocol

解决方法可能是使用NSObject(因为你的类继承了NSObject)然后如果你需要类属性/函数,你可以将它强制转换回你的类:

var myObject: NSObject?
(myObject as? MyClass<YourGenericT>).someFunctionDeclaredInMyClass()