zoukankan      html  css  js  c++  java
  • swift如何动态创建对象

    前言:

    在一些大型的项目中常常在加载页面的时候根据服务器请求下来的数据动态创建视图控制器对象,最近的一个项目就有这一方面的需求,加载页面之前需要先请求服务器的数据得到一个JSON字典,根据里面字符串的名字创建对应的控制器,当然项目工程中有预留对应的控制器。之前在OC中利用字符串动态创建对象可以利用方法NSClassFromString获取到对应的类。在swift中获取类关键步骤是通过这个方法,但是跟OC有了很大的不同,多了一个命名空间.

     创建一个对象,将对象打印出来之后在控制台可以看到类名之前多了一串字符串,该字符串就是命名空间。

    swift动态创建对象:

    为此要动态创建对象的时候需要先获取命名空间,步骤如下:

     1         //动态获取命名空间:
     2         let nameSpace = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as! String
     3         //根据命名空间和传过来的控制器名字获取控制器的类
     4         let controllerClass:AnyClass = NSClassFromString(nameSpace + "." + controllerName)!
     5         
     6         //告诉编译器真实的控制器类型,比如这个控制器本质是UITableViewController则:
     7         let realClass = controllerClass as! UITableViewController.Type
     8         
     9         //实例化这个控制器出来
    10         let childController = realClass.init()
  • 相关阅读:
    计算某一日期是在一年中第几周
    动态生成web表-asp.net table
    sql server 小技巧(7) 导出完整sql server 数据库成一个sql文件,包含表结构及数据
    循环取月的三位英语名 Jan Feb
    Python面向对象编程
    算法
    UDP Sockets in C#
    C++ 11
    GNU Make
    C++ 11
  • 原文地址:https://www.cnblogs.com/develop-SZT/p/5306756.html
Copyright © 2011-2022 走看看