I\'m trying to wrap my head around initialising empty arrays in Swift.
For an array of strings it\'s pretty straight forward :
var myStringArray: String
You can no longer use element concatenation.
class Image {}
Image i1
Image i2
var x = [Image]()
x += i1 // will not work (adding an element is ambiguous)
x += [i1] // this will work (concatenate an array to an array with the same elements)
x += [i1, i2] // also good
You can use this if u want to use swift 2.3!
let path = "/Library/Application Support/Apple/iChat Icons/Flags/"
let image1 = UIImage(contentsOfFile: readPath + "Brazil.png")
let image2 = UIImage(contentsOfFile: readPath + "Chile.png")
var myImageArray = [UIImage]()
myImageArray.append(image1)
myImageArray.append(image2)
The reason this isn't working:
var myNewDictArray: Dictionary[] = []
is that you need to provide types for the keys and values of a dictionary when you define it. Each of these lines will create you an empty array of dictionaries with string keys and string values:
var dictArray1: Dictionary<String, String>[] = Dictionary<String, String>[]()
var dictArray2: Dictionary<String, String>[] = []
var dictArray3 = Dictionary<String, String>[]()
This will create an empty, immutable dictionary:
let dictionary = [ : ]
And if you want a mutable one:
var dictionary = [ : ]
Both of these dictionaries default to Dictionary<String?, AnyObject?>
.
var yourArrayname = [String]() // String or anyOther according to need
You need to give types to the dictionaries:
var myNewDictArray: [Dictionary<String, Int>] = []
or
var myNewDictArray = [Dictionary<String, Int>]()
Edit: You can also use the shorter syntax:
var myNewDictArray: [[String:Int]] = []
or
var myNewDictArray = [[String:Int]]()