swift如何动态创建对象
前言:
在一些大型的項(xiàng)目中常常在加載頁面的時(shí)候根據(jù)服務(wù)器請(qǐng)求下來的數(shù)據(jù)動(dòng)態(tài)創(chuàng)建視圖控制器對(duì)象,最近的一個(gè)項(xiàng)目就有這一方面的需求,加載頁面之前需要先請(qǐng)求服務(wù)器的數(shù)據(jù)得到一個(gè)JSON字典,根據(jù)里面字符串的名字創(chuàng)建對(duì)應(yīng)的控制器,當(dāng)然項(xiàng)目工程中有預(yù)留對(duì)應(yīng)的控制器。之前在OC中利用字符串動(dòng)態(tài)創(chuàng)建對(duì)象可以利用方法NSClassFromString獲取到對(duì)應(yīng)的類。在swift中獲取類關(guān)鍵步驟是通過這個(gè)方法,但是跟OC有了很大的不同,多了一個(gè)命名空間.
?
?創(chuàng)建一個(gè)對(duì)象,將對(duì)象打印出來之后在控制臺(tái)可以看到類名之前多了一串字符串,該字符串就是命名空間。
swift動(dòng)態(tài)創(chuàng)建對(duì)象:
為此要?jiǎng)討B(tài)創(chuàng)建對(duì)象的時(shí)候需要先獲取命名空間,步驟如下:
1 //動(dòng)態(tài)獲取命名空間: 2 let nameSpace = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as! String 3 //根據(jù)命名空間和傳過來的控制器名字獲取控制器的類 4 let controllerClass:AnyClass = NSClassFromString(nameSpace + "." + controllerName)! 5 6 //告訴編譯器真實(shí)的控制器類型,比如這個(gè)控制器本質(zhì)是UITableViewController則: 7 let realClass = controllerClass as! UITableViewController.Type 8 9 //實(shí)例化這個(gè)控制器出來 10 let childController = realClass.init()?
轉(zhuǎn)載于:https://www.cnblogs.com/develop-SZT/p/5306756.html
總結(jié)
以上是生活随笔為你收集整理的swift如何动态创建对象的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (王道408考研数据结构)第一章绪论-第
- 下一篇: 【C语言重点难点精讲】C语言指针