2016-03-09 14 views
26

verwendet werden. Ich versuche, eine Zugriffsmethode für einen Singleton zu erstellen. Ich erhalte diesen Fehler (siehe Code unten). Ich verstehe nicht, warum ich diesen Fehler bekomme und was dieser Fehler bedeutet. Kann mir jemand erklären?Statischer Member kann nicht für Instanz des Typs

+5

'AppDelegate.thedelegate = self' –

+0

, dass die Lösung für dieses Problem ist, aber Sasha hat es – andrewz

Antwort

17

Sie versuchen, auf Klassenvariable von der Instanz dieser Klasse zuzugreifen. Um das zu verwenden, müssen Sie die Funktion Klassenebene verwenden: static func(). Versuchen Sie folgendes:

static func sharedDelegate() -> AppDelegate { 
    return UIApplication.sharedApplication().delegate as! AppDelegate 
} 
+9

erklärt Msgstr "Sie versuchen, auf den Klassenparameter von Instanz zuzugreifen" - warum kann ich das nicht tun? – andrewz

+0

überprüfen Sie diese Antwort - http://stackoverflow.com/questions/29636633/static-vs-class-functions-variables-in-swift-classes –

+0

hm, ich tat, aber es beantwortet meine Frage nicht. Es geht um das Überschreiben statischer gegen Klassenmethoden/Eigenschaften. Ich versuche nicht, eine Eigenschaft zu überschreiben. Ich versuche, auf eine statische Eigenschaft ('thedelegate') innerhalb der Methode einer Instanz zuzugreifen. – andrewz

16

Sie müssen den statischen/Klassenvariable oder eine Funktion mit dem Klassennamen vorangestellt, in dem er erklärt, auch wenn sie in derselben Klasse.

In diesem Fall möchten Sie return AppDelegate.thedelegate!

und als Martin R. weist darauf hin, AppDelegate.thedelegate = self

+1

Perfekt, danke. –

+1

Es scheint inkonsistent, denn wenn Sie eine let x = someStatic tun, funktioniert es im globalen Bereich der Klasse, keine Notwendigkeit für das Präfix. – LegendLength

Verwandte Themen