zoukankan      html  css  js  c++  java
  • swift 动态获取类, 获取命名空间

    在做swift开发中很多时候会动态加载控制器的类, 可以让app更加灵活显示界面信息

    一般情况下都是服务器返回显示的控制器类name然后动态显示, 但是服务器返回的类name是string, 怎么转换成class类型呢

    swift里还有一个概念就是命名空间, 一个类打印出来是由[命名空间.类名]组成所以怎么活的命名空间

    首先我们看看如果一个类被打印出来是什么

    我在代码中输入如下代码

     let s = CCiPhone()
     print(s)

    打印出来的结果是这个样子

    由此可见在swift中如果打印一个类结构: 命名空间.类名

    命名空间是大多数语言都有的一种语法, C#/Java/C++等语言都是有的

    命名空间在swift中是能被修改的

    如果想获取命名空间可以获取对应info.plist文件

    代码:

    NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"]!

    所以说我们想把一个字符串转换成一个类, 也应该是这个格式的才能转换过去, 字符串转换成类的代码如下

            let className = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as! String + ".CCiPhone"
            let cls: AnyObject? = NSClassFromString(className)
            let clas = cls as! NSObject.Type!;
            
            let classType = clas.init()
            print(classType)
            
            let s = CCiPhone()
            print(s)

    2次打印的结果

  • 相关阅读:
    SAS学习 day10
    SAS学习 day9
    SAS学习 day8
    Python解释器 发展史
    os. 模块
    字典
    类型1
    计算机编码
    EDA 会议整理
    2020-8-27
  • 原文地址:https://www.cnblogs.com/MrTao/p/5317433.html
Copyright © 2011-2022 走看看