wiem, że to jest możliwe, aby przejść typu klasy do funkcji w Swift:Swift: jak powrócić typ klasy z funkcją
func setGeneric<T>(type: T.Type){ }
setGeneric(Int.self)
Ale jak możemy wrócić typ z funkcji? Napisanie czegoś takiego jak daje błąd kompilatora "Int nie jest identyczny z T". Czy można zwrócić typ z funkcji Swift?
Edytuj
Niektóre wyjaśnienia. Mam klasy używane do utrzymywania (używam dziedziny) i mam klasy, które działają jak opakowania wokół tych klas. Wszystkie owijki dziedziczą po RealmClassWrapper
, co wymaga znajomości klasy Realm, którą faktycznie otacza. Więc powiedzmy, że mam ten model erę:
class RealmTodo: RLMObject {
dynamic var title = ""
}
i moja klasa owijarki kolacja wygląda następująco:
class RealmClassWrapper {
private let backingModel: RLMObject
//...
func backingModelType<T>() -> T.Type{ fatalError("must be implemented") }
}
i rzeczywistej Wrapper:
class Todo: RealmClassWrapper {
//some other properties
func backingModelType<T>() -> T.Type{ return RealmTodo.self }
}
Dziękujemy! To faktycznie rozwiązało mój problem. –
Po prostu natknąłem się na to, gdy szukałem tego, jak to zrobić z protokołami. Załóżmy, że masz publiczny protokół 'ImageRendering' i prywatną implementację' MyImageRenderer', możesz zrobić 'func getRendererType() -> ImageRendering.Type {return MyImageRenderer.self}' i to zadziała. – milch