[SWIFT] Transition Objc -> Swift
devulder
Membre
Hello a tous,
Je fais sur macOS un projet en Swift, le passage objC -> Swift se passe plus plutôt bien.
Car contre il y a deux trois trucs qui me gonflent
Exemple:
Utilisation de la classe NSImage ObjC:
``
NSImage *img = [NSImage imageNamed:@mypic];
``
Idem en Swift
``
let img = NSImage.init(named:NSImage.Name(rawValue:"mypic")
``
C'est vraiment pas terrible comme code!
Est t'il possible de créer une extension de classe pour
avoir une syntaxe du type :
``
let img = NSImage.init(named:"mypic")
``
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le plus simple et une extension de
NSImage.Name
:Ensuite tu peux sans soucis écrire ce code :
Merci pour ta réponse, mon projet n'a pas beaucoup d'images çà va le faire!
Sinon il y aussi cela
let imgname:NSString = "mypic"
let mypic = NSImage.init(named:imgname as NSImage.Name)
Ouais mais non faut pas faire ce genre de trucs. Vraiment.
Ceci ne fonctionne pas ?
C'est mieux de suivre les conseils officiels d'Apple en déclarant l'extension à NSImage.Name comme dit Pyroh
Si, mais bon au départ on a sur objC une syntaxe hyper simple et on passe à un code moins lisible du Swift
a mon avis.
Ok, c'est noté
Certes, mais ça a quand même un intérêt, parce que les noms des images intégrées AppKit sont enfin renseignés de manière exhaustive. On sent surtout le poids des années… Swift fait avec, tant bien que mal.