我看到imageNamed已从可用选项中弃用(或删除)当我执行以下操作时:
var statusImage:NSImage? = nil
self.statusImage = NSImage .ImageNamed....
我已经尝试过Apple和其他人提供的Swift文档。这看起来非常简单但无法找到imageNamed的解决方案。我错过了什么吗?
答案 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语法它