2014-06-18 3 views
10

.imageNamed Ich bin zu sehen als veraltet (oder entfernt) aus den verfügbaren Optionen imagenamed Wenn ich Folgendes tun:Swift: Kann nicht verwenden NSImage

 var statusImage:NSImage? = nil 

     self.statusImage = NSImage .ImageNamed.... 

enter image description here

ich versucht haben, das Swift-Dokument von Apple bereitgestellten und andere platziert. Dies schien sehr trivial, aber konnte nicht die Lösung für ImageNamed finden. Fehle ich etwas?

+0

mögliches Duplikat von [Definieren der Datei, die ein UIImage verwenden soll (Swift)] (http://stackoverflow.com/questions/24049537/defining-the-file-a-uiimage-will-use-swift) – Jack

Antwort

25

Verwenden Sie stattdessen init(named: String!): nennen Sie es wie NSImage(named: "foo").

Der Compiler automatisch remaps ObjC Klassenmethoden, die als Convenience-Konstrukteuren benannt werden als Swift initializers zu arbeiten. Wenn ein Klassenmethode die Namenskonvention eines Convenience-Konstruktor folgt (z.B. +[SomeThing thingWithFoo: bar:]), neu zuordnet Swift es zu einer Initialisierer (z.B. SomeThing(foo: aFoo, bar: aBar) nennen). Dies gilt auch für einige Methoden, die Apple als einen praktischen Konstruktor (wie im Fall imageNamed:) identifiziert hat.

In den meisten Fällen, wenn Sie den Klasse-Methode Stil Anruf zu einem Convenience-Konstruktor beenden eingeben, wird der Compiler einen Fehler geben, die Sie sagt, wie es neu zugeordnet worden:

error: 'imageNamed' is unavailable: use object construction 'NSImage(named:)' 

Ganz allgemein, Sie kann das autogenerierte Modul "header" für ein API-Symbol in Xcode ansehen, indem man im Editor cmd-klickt (z. B. NSImage) oder im Xcode-Dokumentations-Viewer oder in den Online-Referenzdokumenten für diese API nach der Swift-Syntax für sucht es benutzen.