Swift: Creating an array of UIImage Swift: Creating an array of UIImage arrays arrays

Swift: Creating an array of UIImage


You have two problems (and without a regex!)

1. You aren't creating an array. You need to do:

var logoImages: [UIImage] = []

or

var logoImages: Array<UIImage> = []

or

var logoImages = [UIImage]()

or

var logoImages = Array<UIImage>()

2. If you want to add new objects to an array, you should use Array.append() or some of the equivalent syntactic sugar:

logoImages.append(UIImage(named: "logo.png")!)

or

logoImages += [UIImage(named: "logo.png")!]

or

logoImages += [UIImage(named: "logo.png")!, UIImage(named: "logo2.png")!]

You need to append to the array because (excerpt from docs):

You can’t use subscript syntax to append a new item to the end of an array. If you try to use subscript syntax to retrieve or set a value for an index that is outside of an array’s existing bounds, you will trigger a runtime error. However, you can check that an index is valid before using it, by comparing it to the array’s count property. Except when count is 0 (meaning the array is empty), the largest valid index in an array will always be count - 1, because arrays are indexed from zero.

Of course you could always simplify it when possible:

var logoImage: [UIImage] = [    UIImage(named: "logo1.png")!,    UIImage(named: "logo2.png")!]

edit: Note that UIImage now has a "failable" initializer, meaning that it returns an optional. I've updated all the bits of code to reflect this change as well as changes to the array syntax.


You are declaring the type for logoImages but not creating an instance of that type.

Use var logoImages = UIImage[]() which will create a new array for you.

...and then after creating a new empty Array instance, as described in the answer by @Jiaaro you can't use subscripting to add to an empty array


var image : UIImage = UIImage(named:"logo.png")    var logoImages = [image]