美文网首页SwiftBlogiosswift是未来
Swift:获取命名空间(namespace),动态加载类

Swift:获取命名空间(namespace),动态加载类

作者: Monkey_ALin | 来源:发表于2015-10-12 15:54 被阅读3410次

    1. tips

    • 1.1在swift中,类名的组成格式是 namespace.类名.比如我们在任意一个控制器的viewDidLoad()方法中打印self,打印结果是:
    打印结果.png
    - 这儿的`Test`就是namespace,默认的就是项目名.
    
    • 1.2. namespace默认是项目名称,同一个命名空间全局共享

    2.怎么查看namespace

    • namespace在info.plist 对应的是 CFBundleExecutable,我们可以在info.plist中任意右击一行,选中Show Raw Keys/Values查看真实的key,如图
    查看CFBundleExecutable.png

    3.如何修改namespace

    • 如果新建项目时,项目名称中包含有中文,可以进入是Build Settings中选中"All", 搜索product name,即可修改,如图:
    修改命名空间.png
    - 这儿一定要记住:新改的名字不能含有中文,不能以数字开头,不能有-

    4.如何代码获取命名空间名称,并创建相应的类

    // 从info.plist读取namespace
    let namespace = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as! String
    // 拼接类名的完整格式,即namespace.类名,vcName即控制器的类名
    let clsName = namespace + "." + vcName
    let cls: AnyClass = NSClassFromString(clsName)!
    // 得到相应的控制器
    let vc = cls.alloc() as! UITableViewController
    

    联系我

    <a href="https://github.com/SunLiner">github</a>

    <a href="http://www.weibo.com/5589163526/profile?rightmod=1&wvr=6&mod=personinfo&is_all=1">微博</a>

    <a href="http://www.jianshu.com/users/9723687edfb5/latest_articles">简书</a>

    相关文章

      网友评论

        本文标题:Swift:获取命名空间(namespace),动态加载类

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