Reputation: 3760
I am trying to figure out how to translate this in Swift and I am also having this error: "Could not find an overload for “init” that accepts the supplied arguments". Any suggestion appreciated. Thanks.
var pageImages:[UIImage] = [UIImage]()
pageImages = [UIImage(named: "example.png"), UIImage(named: "example2.png")]
Upvotes: 4
Views: 5217
Reputation: 856
Confirming what matt says:
in xCode 6.0 this does work:
images = [UIImage(named: "steps_normal"), UIImage(named: "steps_big")]
but in xCode6.1 values should be unwrapped:
images = [UIImage(named: "steps_normal")!, UIImage(named: "steps_big")!]
Upvotes: 14
Reputation: 93276
UIImage(named:)
changed to be a failable initializer in Xcode 6.1, which means that it will return nil
if any of the images you've listed are missing from your bundle. To safely load the images, try something like this instead:
var pageImages = [UIImage]()
for name in ["example.png", "example2.png"] {
if let image = UIImage(named: name) {
pageImages.append(image)
}
}
Upvotes: 2
Reputation: 535306
Unwrap those optionals. A UIImage is not the same as a UIImage?, which is what the named:
initializer returns. Thus:
var pageImages = [UIImage(named: "example.png")!, UIImage(named: "example2.png")!]
(Unless, of course, you actually want an array of optional UIImages.)
Upvotes: 3