iOS-Swift

Swift_do{}catch{}

2016-12-09  本文已影响58人  figure_ai

OC中一般情况如果发生错误会给传入的指针赋值,而在Swift中使用的是异常处理机制。

/*
1.do{}catch{}, 只有do中的代码发生了错误, 才会执行catch{}中的代码
 2. try  正常处理异常, 也就是通过do catch来处理
     try! 告诉系统一定不会有异常, 也就是说可以不通过 do catch来处理
但是需要注意, 开发中不推荐这样写, 一旦发生异常程序就会崩溃,如果没有异常那么会返回一个确定的值给我们
      try? 告诉系统可能有错也可能没错, 如果没有系统会自动将结果包装成一个可选类型给我们, 如果有错系统会返回nil, 如果使用try? 那么可以不通过do catch来处理
            */
 do {
             //解析二进制数据
            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里边的代码发生错误,比如,解析不了数据,就会执行catch里边的代码
            addChildViewController("HomeTableViewController", title: "首页", imageName: "tabbar_home")
            addChildViewController("MessageTableViewController", title: "消息", imageName: "tabbar_message_center")
            addChildViewController("DiscoverTableViewController", title: "发现", imageName: "tabbar_discover")
            addChildViewController("ProfileTableViewController", title: "我", imageName: "tabbar_profile")
        }

注:do{}catch{}两个间的代码只能执行一个。

上一篇下一篇

猜你喜欢

热点阅读