【发布时间】:2015-03-22 15:53:40
【问题描述】:
我知道可以在 swift 中将类类型传递给函数:
func setGeneric<T>(type: T.Type){ }
setGeneric(Int.self)
但是我们如何从函数返回类型呢?写类似
func getGeneric<T>() -> T.Type {
return Int.self
}
给出编译器错误“Int 与 T 不同”。那么是否可以从 swift 函数中返回类型?
编辑
一些解释。我有用于持久性的类(我正在使用 Realm),并且我有充当这些类的包装器的类。所有包装器都继承自RealmClassWrapper,它需要知道它实际包装的 Realm 类。所以假设我有这个领域模型:
class RealmTodo: RLMObject {
dynamic var title = ""
}
我的包装晚餐类看起来像这样:
class RealmClassWrapper {
private let backingModel: RLMObject
//...
func backingModelType<T>() -> T.Type{ fatalError("must be implemented") }
}
和实际的包装器:
class Todo: RealmClassWrapper {
//some other properties
func backingModelType<T>() -> T.Type{ return RealmTodo.self }
}
【问题讨论】: