美文网首页
关于swift中命名空间的问题

关于swift中命名空间的问题

作者: best_su | 来源:发表于2018-04-13 18:46 被阅读0次

    不作死,不消停

    当你的项目名字为: 1、xxxx-HD 或者 2、xxxx_HD的时候第一种你怎么找都找不到,因此一定不要使用第一种设置成项目的名字,第二中才是正解,或者不加其他的符号

    先上代码
        /// 类文件字符串转换为ViewController
        ///
        /// - Parameter childControllerName: VC的字符串
        /// - Returns: ViewController
        func get_to_viewController(_ childControllerName: String) -> UIViewController?{
            // 1.获取命名空间
            // 通过字典的键来取值,如果键名不存在,那么取出来的值有可能就为没值.所以通过字典取出的值的类型为AnyObject?
            guard let clsName = Bundle.main.infoDictionary!["CFBundleExecutable"] else {
                print("命名空间不存在")
                return nil
            }
            // 2.通过命名空间和类名转换成类
            let cls : AnyClass? = NSClassFromString((clsName as! String) + "." + childControllerName)
            print("cls", cls, "childControllerName", childControllerName)
            // swift 中通过Class创建一个对象,必须告诉系统Class的类型
            guard let clsType = cls as? UIViewController.Type else {
                print("无法转换成UIViewController")
                return nil
            }
            // 3.通过Class创建对象
            let childController = clsType.init()
            return childController
        }
    
    /*
      如果你是第一种命名的话系统会给你变成xxxx_HD,但是你在打印clsName的时候就是xxxx-HD,因此,别用-,一定要用下划线呀
      print("cls", cls, "childControllerName", childControllerName)
    */
    
    

    相关文章

      网友评论

          本文标题:关于swift中命名空间的问题

          本文链接:https://www.haomeiwen.com/subject/xorhkftx.html