Я знаю, что можно передать тип класса в функцию в swift:
func setGeneric<T>(type: T.Type){ }
setGeneric(Int.self)
Но как мы можем вернуть тип из функции? Написание чего-то типа
func getGeneric<T>() -> T.Type {
return Int.self
}
дает ошибку компилятора "Int не идентична T". Так можно ли вернуть тип из быстрой функции?
Edit
Некоторое объяснение. У меня есть классы, которые используются для сохранения (я использую 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 }
}