var sectionArray:[[String:Any]] = [ ["sectionName":"Time Cards To Approve","sectionData":
[["fname":"true detective","date":"may 20"],["fname":"abbas","date":"may 10"]],"expanaded":false],
["sectionName":"Message Log","sectionData":[["movie":"true detective","event":"Bring food","date":"May 19"],["movie":"false detective","event":"no shoot today","date":"may 20"]],"expanaded":false]
]
I want to get the fname when I try below code it shows the error like **error: Execution was interrupted, reason: signal SIGABRT.
The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.
**
let ni = sectionArray[0]
let mi = ni["sectionData"] as! [String:String]
let sh = mi["fname"]
>Solution :
you cannot cast ni["sectionData"] as! [String:String]
because it is not an array of [String:String] and you should not use !.
Try this:
if let mi = ni["sectionData"] as? [[String:String]] {
print("---> mi: \(mi) ")
let sh1 = mi[0]["fname"]
let sh2 = mi[1]["fname"]
print("---> sh1: \(sh1) \n")
print("---> sh2: \(sh2) \n")
}