我试图在操场上创建一个复杂的Array
,方法如下:
import UIKit
let demoData = [
[
"name":"Mr Bean",
"number": "012345678",
"address": "4 D. Street",
"dob": "21-9-1970",
"gender": "male",
"docs": [
"alerts":["jt_alert_1.jpg", "jt_alert_2.jpg"],
"notes":["jt_notes_1.png", "jt_notes_2.jpg", "jt_notes_3.jpg", "jt_notes_4.jpg"],
"correspondence": [],
"investigations": [],
"operationsheets": [],
"treatmentcharts": []
]
],
[
"name":"Jenny Thomas",
"number": "012345679",
"address": "5 D. Street",
"dob": "22-9-1970",
"gender": "female",
"docs": [
"alerts":[],
"notes":[],
"correspondence": [],
"investigations": [],
"operationsheets": [],
"treatmentcharts": []
]
]
];
let notes: AnyObject? = demoData[0]["docs"]!["notes"]!
let notePics = notes as Array<String>
notePics[0]
右下角的纺车始终保持旋转状态。 当我创建一个新的swift项目时,相同的代码冻结了所有内容,而XCode正在编制索引
还有其他人有同样的问题吗?如果是,任何解决方案?
提前致谢
答案 0 :(得分:0)
您的数据非常复杂,因此Swift很难弄清楚您在做什么。给编译器一个关于demoData
:
let demoData:[[String:AnyObject]] = [
...
一切都会好的。
您可能还希望在解压缩结构时更明确地了解您希望找到的内容:
if let docdict = demoData[0]["docs"] as? [String:AnyObject] {
if let notePics = docdict["notes"] as? [String] {
println(notePics[0])
}
}
可选绑定(if let
)与条件强制转换(as?
)相结合,为您的程序提供了额外的安全性。如果你对其中一个键错了,或者你对值的数据类型有误,那么这将永远不会进入内部块。如果您使用强制解包(!
),如果密钥不在您的字典中,您的程序将崩溃。同样,如果您将值(使用as
)转换为不属于的类型,则程序将崩溃。