我正在尝试在Swift中翻译这个内容,但是出现了错误:“找不到接受所提供参数的“init”的重载”。非常感谢任何建议。
var pageImages:[UIImage] = [UIImage]()
pageImages = [UIImage(named: "example.png"), UIImage(named: "example2.png")]
我正在尝试在Swift中翻译这个内容,但是出现了错误:“找不到接受所提供参数的“init”的重载”。非常感谢任何建议。
var pageImages:[UIImage] = [UIImage]()
pageImages = [UIImage(named: "example.png"), UIImage(named: "example2.png")]
确认Matt所说的:
在xCode 6.0中,这确实可以工作:
images = [UIImage(named: "steps_normal"), UIImage(named: "steps_big")]
但在xCode6.1中,值应该被解包:
images = [UIImage(named: "steps_normal")!, UIImage(named: "steps_big")!]
images = [UIImage(named: "steps_normal") ?? UIImage(), UIImage(named: "steps_big") ?? UIImage()]
因此,如果没有找到图像,应用程序将不会崩溃,确保应用程序稳定运行。 - Eugene Braginets拆开那些可选项。UIImage并不等同于UIImage?,这是named:
初始化程序返回的内容。因此:
var pageImages = [UIImage(named: "example.png")!, UIImage(named: "example2.png")!]
init(named:)
现在(正确地)返回一个可选项。它不是隐式解包的。这就是为什么他必须解包它的原因。 - mattUIImage(named:)
在Xcode 6.1中被改为了一个可失败的初始化器,这意味着如果您在包中未找到列表中的任何图像,则它将返回nil
。为了安全地加载图像,请尝试像这样做:
var pageImages = [UIImage]()
for name in ["example.png", "example2.png"] {
if let image = UIImage(named: name) {
pageImages.append(image)
}
}