Swift:不能使用NSImage .imageNamed

时间:2014-06-18 21:43:12

标签: swift osx-yosemite

我看到imageNamed已从可用选项中弃用(或删除)当我执行以下操作时:

       var statusImage:NSImage? = nil

       self.statusImage = NSImage .ImageNamed....

enter image description here

我已经尝试过Apple和其他人提供的Swift文档。这看起来非常简单但无法找到imageNamed的解决方案。我错过了什么吗?

1 个答案:

答案 0 :(得分:25)

使用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:)'

更一般地说,您可以查看自动生成的模块"标题"对于Xcode中的API符号,通过cmd单击该符号(例如NSImage)在编辑器中,或查看Xcode的文档查看器或该API的在线参考文档,以查找使用的Swift语法它