OC中一般情況如果發(fā)生錯(cuò)誤會給傳入的指針賦值谤碳,而在Swift中使用的是異常處理機(jī)制婆硬。
-
但凡有throw方法的都要進(jìn)行try處理,而進(jìn)行try處理就要寫上do{}catch{}
示例代碼
/*
1.do{}catch{}, 只有do中的代碼發(fā)生了錯(cuò)誤, 才會執(zhí)行catch{}中的代碼
2. try 正常處理異常, 也就是通過do catch來處理
try! 告訴系統(tǒng)一定不會有異常, 也就是說可以不通過 do catch來處理
但是需要注意, 開發(fā)中不推薦這樣寫, 一旦發(fā)生異常程序就會崩潰,如果沒有異常那么會返回一個(gè)確定的值給我們
try? 告訴系統(tǒng)可能有錯(cuò)也可能沒錯(cuò), 如果沒有系統(tǒng)會自動將結(jié)果包裝成一個(gè)可選類型給我們, 如果有錯(cuò)系統(tǒng)會返回nil, 如果使用try? 那么可以不通過do catch來處理
*/
do {
//解析二進(jìn)制數(shù)據(jù)
let objcs = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers) as! [[String : AnyObject]]
for dict in objcs {
let chilControllerName = dict["vcName"] as? String
let title = dict["title"] as? String
let imageName = dict["imageName"] as? String
addChildViewController(chilControllerName, title: title, imageName: imageName)
}
}catch {
//如果do里邊的代碼發(fā)生錯(cuò)誤,比如琐谤,解析不了數(shù)據(jù)檐蚜,就會執(zhí)行catch里邊的代碼
addChildViewController("HomeTableViewController", title: "首頁", imageName: "tabbar_home")
addChildViewController("MessageTableViewController", title: "消息", imageName: "tabbar_message_center")
addChildViewController("DiscoverTableViewController", title: "發(fā)現(xiàn)", imageName: "tabbar_discover")
addChildViewController("ProfileTableViewController", title: "我", imageName: "tabbar_profile")
}
注:do{}catch{}兩個(gè)間的代碼只能執(zhí)行一個(gè)魄懂。