功能: 薄弱

App 需要 显示不同的界面。 又不用 改版 升级。 可以 把需要 显示的 界面 ,放在 一个 Json文件 里面。 改Json 文件 ,就可以了。

比较巧妙,还可以这么搞。

今天讲到 文件 的 读写 , 一窍不通, 这是我的 薄弱 环节。

import UIKit

class MainTabBarController: UITabBarController {
    
    
    //json文件对应的数组
    //计算属性
    private var array: Array>? {
        
        get {
            //读文件
            let path = NSBundle.mainBundle().pathForResource("Ctrl.json", ofType: nil)
            
            var myArray: Array>? = nil
            if let filePath = path {
                
                let data = NSData(contentsOfFile: filePath)
                if let jsonData = data {
                    
                    do {
                    
                        let jsonValue = try NSJSONSerialization.JSONObjectWithData(jsonData, options: .MutableContainers)
                        if jsonValue.isKindOfClass(NSArray.self) {
                            myArray = jsonValue as? Array>
                        }
                        
                    }catch {
                        //程序出现异常
                        print(error)
                        return nil
                    }
                    
                    
                }
                
            }
            
            return myArray
        }
    }
 

解析 Json 文件 时,不要强制解析(!).

好处,不强解, 就不会崩。

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        //Swift里面,一般在类的内部调用属性和方法的时候,可以不写self,一般在闭包里面写self
        //创建视图控制器
        createViewControllers()
    }
    
    //创建视图控制器
    func createViewControllers(){
        
        var ctrlNames = [String]()
        
        if let tmpArray = self.array {
            //json文件的数据解析成功
            //并且数组里面有数据
            for dict in tmpArray {
                
                let name = dict["ctrlName"]
                ctrlNames.append(name!)
            }
        }else{
//            ctrlNames = ["CookBookViewController", "CommunityViewController","MallViewController","FoodClassViewController","ProfileViewController"]
        }
        
        
        
        var vCtrlArray = Array()
        for i in 0..

你可能感兴趣的:(功能: 薄弱)