美文网首页
关于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中命名空间的问题

    不作死,不消停 当你的项目名字为: 1、xxxx-HD 或者 2、xxxx_HD的时候第一种你怎么找都找不到,...

  • Swift中String转Class类名

    String->Class Swift中引入了命名空间的概念,转Class需要拼接命名空间 注意Swift中引入了...

  • Swift学习之通过字符串创建对象

    一、swift的空间命名机制在 Swift 中,由于可以使用命名空间了,即使是名字相同的类型,只要是来自不同的命名...

  • Swift添加命名前缀

    Swift命名前缀 Swift的命名空间是基于模块(module),每一个module代表了一个Swift中的一个...

  • Swift中的命名空间

    命名空间 Objective-C一个一直以来令人诟病的地方就是没有命名空间,在应用开发时,所有的代码和引用的静态库...

  • Swift中的命名空间

    命名空间namespace在C++、C#里面是一个常见概念,Swift中也引入了这样一个机制,下面来探索一下这个命...

  • swift中的命名空间

    OC中没有命名空间,如果直接使用两个不同库,而且这两个库中都使用了同一个流行的三方,那么就会产生冲突。swift中...

  • Swift 基础(3) -- 根据类名创建对象

    1. 基础 Swift中的类名 在Swift中的类名是 : 命名空间 + 类名 .(比如:TestDemo.Per...

  • swift学习之语法基础二

    命名空间 swift中引入了命名空间的概念,只要在同一个命名空间下所有的资源都是共享的,而且默认情况下项目名称就是...

  • iOS之浅谈纯代码控制UIViewController视图控制器

    在 swift动态获取类的名字的时候,要在前面加上"命名空间名字.",但是命名空间如果是中文的话可能会出现别的问题...

网友评论

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

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