Travis M.
Travis M.

Reputation: 11257

Swift - Error Accessing Data From Dictionary with Array of Dictionaries

I have a very simple example of what I'd like to do

private var data = [String: [[String: String]]]()

override func viewDidLoad() {
    super.viewDidLoad()
    let dict = ["Key": "Value"]
    data["Blah"] = [dict, dict]
}

@IBAction func buttonTap(sender: AnyObject) {
    let array = data["Blah"]
    let dict = array[0] //<---- error here
    println(dict["Key"])
}

Basically, I have a dictionary whose values contain an array of [String: String] dictionaries. I stuff data into it but when I go to access the data, I get this error:

Cannot subscript a value of type '[([String : String])]?' with an index of type 'Int'

Please let me know what I'm doing wrong.

Upvotes: 6

Views: 7517

Answers (2)

Gwendle
Gwendle

Reputation: 1941

It doesn't like calling a subscript on an optional.

If you're sure data["Blah"] exists, you should do:

let dict = array![0] 

Upvotes: 3

kellanburket
kellanburket

Reputation: 12833

Your constant array is an optional. Subscripting a dictionary always returns an optional. You have to unwrap it.

let dict = array![0]

Better yet,

if let a = array {
   let dict = a[0]
}

Upvotes: 12

Related Questions