Swift: нельзя использовать NSImage.imageNamed

Я вижу, что imageNamed устарел (или удален) из доступных параметров. Когда я делаю следующее:

       var statusImage:NSImage? = nil

       self.statusImage = NSImage .ImageNamed....

enter image description here

Я попробовал документ Swift, предоставленный Apple и другими размещенными. Это казалось очень тривиальным, но не могло найти решение для imageNamed. Я что-то упускаю?

Ответ 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 для его использования.