Ich weiß es möglich ist, Klassentyp auf eine Funktion in schnellen passieren:Swift: wie Klasse Typ von Funktion zurückzukehren
func setGeneric<T>(type: T.Type){ }
setGeneric(Int.self)
Aber wie können wir Art von Funktion zurückgeben? Schreiben etwas wie
gibt Compiler Fehler "Int ist nicht identisch mit T". Ist es also möglich, den Typ von einer schnellen Funktion zurückzugeben?
Bearbeiten
Einige Erklärung. Ich habe Klassen, die für die Persistenz verwendet werden (ich verwende Realm) und ich habe Klassen, die als Wrapper um diese Klassen agieren. Alle Wrapper erben von RealmClassWrapper
, die wissen müssen, welche Realm-Klasse sie tatsächlich umschließt. So können sagen, ich dieses Reich Modell haben:
class RealmTodo: RLMObject {
dynamic var title = ""
}
und meine Wrapper Abendessen Klasse sieht wie folgt aus:
class RealmClassWrapper {
private let backingModel: RLMObject
//...
func backingModelType<T>() -> T.Type{ fatalError("must be implemented") }
}
und Ist-Wrapper:
class Todo: RealmClassWrapper {
//some other properties
func backingModelType<T>() -> T.Type{ return RealmTodo.self }
}
Danke! Das hat mein Problem gelöst. –
Ich bin gerade darüber gestolpert, als ich nach Protokollen suchte. Angenommen, Sie haben ein öffentliches Protokoll 'ImageRendering' und eine private' MyImageRenderer' Implementierung, können Sie 'func getRendererType() -> ImageRendering.Type {return MyImageRenderer.self}' erstellen und es wird funktionieren. – milch