2014-06-18 16 views
10

sto vedendo imageNamed deprecato (o rimossi) da opzioni disponibili Quando faccio la seguente:Swift: Non è possibile utilizzare NSImage .imageNamed

 var statusImage:NSImage? = nil 

     self.statusImage = NSImage .ImageNamed.... 

enter image description here

ho cercato il documento Swift fornito da Apple e altri posti.Questo sembrava molto banale ma non riusciva a trovare la soluzione per imageNamed. Mi sto perdendo qualcosa?

+0

possibile duplicato di [Definizione del file utilizzato da UIImage (Swift)] (http://stackoverflow.com/questions/24049537/defining-the-file-a-uiimage-will-use-swift) – Jack

risposta

25

Utilizzare invece init(named: String!): chiamarlo come NSImage(named: "foo").

Il compilatore rimappa automaticamente i metodi di classe ObjC che vengono denominati come costruttori di convenienza per funzionare come inizializzatori Swift. Se un metodo di classe segue la convenzione di denominazione di un costruttore di convenienza (ad esempio +[SomeThing thingWithFoo: bar:]), Swift lo riassocia a un inizializzatore (ad esempio chiama SomeThing(foo: aFoo, bar: aBar)). Ciò vale anche per alcuni metodi che Apple ha identificato come funzionanti come un costruttore di convenienza (come nel caso di imageNamed:).

Nella maggior parte dei casi, se hai finito a digitare il call-metodo-stile di classe ad un costruttore convenienza, il compilatore vi darà un errore che ti dice come è stato rimappato:

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

Più in generale, si può guardare l'"header" del modulo generato automaticamente per un simbolo API in Xcode facendo clic su quel simbolo (es. NSImage) nell'editor, oppure cercare nel visualizzatore documentazione di Xcode o nei documenti di riferimento online per quell'API, per trovare la sintassi Swift per usandolo.

Problemi correlati