我有一个关于 swift 和泛型的问题。我试图做的是获得一个具有泛型类型的对象。但我首先知道运行时的类型。但要快速切入正题。
新编辑的块:
也许我可以用班级名称做到这一点?我有一个类名作为字符串。我是通过镜子得到的。我可以在字符串中使用该类名创建一个通用实例吗?
let classname: String = "ClassA"
let firstA: a<classname> = a<classname>()
// ^^^^^^^^^ ^^^^^^^^^
// what to put here???
Run Code Online (Sandbox Code Playgroud)
新编辑的块结束:
我有两个具有泛型类型的类:
这是我的类型必须实现的协议:
protocol ToImplement {
func getTypeForKey(key: String) -> NSObject.Type
}
Run Code Online (Sandbox Code Playgroud)
这是我用于我的第一个通用类型的类:
class MyClass: ToImplement {
func getTypeForKey(key: String) -> NSObject.Type {
if key == "key1" {
return UIView.self
}
else {
return UIButton.self
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的第一个具有泛型类型的类:
class a<T:ToImplement> {
func doSomethingWith(obj: T) -> T {
// the next part usually runs in an iteration …Run Code Online (Sandbox Code Playgroud) 我想订阅一个可观察的对象,但是在第一个元素之后,我想处置该订阅者。
有一些默认的方法吗?
如果没有,您将如何解决?顺便说一下,我不能改变可观察的东西。