在视图控制器中具有泛型的可选对象



不知道如何指定我的问题。所以这里有一个例子:

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 中指定泛型类型,就不可能实现我想要的。

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

let myObject: MyClass & MyProtocol
解决方法可能是使用 NSObject(因为您的类

继承了 NSObject(然后,如果您需要类属性/函数,则可以将其强制转换为您的类:

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

相关内容

  • 没有找到相关文章

最新更新