Ответ 1
Используйте init(named: String!)
: назовите его как NSImage(named: "foo")
.
Компилятор автоматически переназначает методы класса ObjC, которые называются конструкторами удобства для работы в качестве инициализаторов Swift. Если метод класса следует за соглашением именования конструктора удобства (например, +[SomeThing thingWithFoo: bar:]
), Swift переназначает его на инициализатор (например, вызов SomeThing(foo: aFoo, bar: aBar)
). Это также относится к нескольким методам, которые Apple определила как работающие как конструктор удобства (как в случае imageNamed:
).
В большинстве случаев, если вы закончите набирать вызов класса класса в конструктор удобства, компилятор даст вам сообщение об ошибке, которое сообщает вам, как оно было переназначено:
error: 'imageNamed' is unavailable: use object construction 'NSImage(named:)'
В более общем плане вы можете посмотреть "заголовок" автогенерированного модуля для символа API в Xcode, нажав на этот символ (например, NSImage
), или посмотрите в средстве просмотра документации Xcode или в онлайновых справочных документах для этот API, чтобы найти синтаксис Swift для его использования.