swift通過字串獲取型別例項化物件問題

2021-07-30 03:36:17 字數 1192 閱讀 7923

相信大家都碰到過輪播圖跳轉問題,公司需求變來變去,一會兒要跳網頁一會兒要跳原生介面,跳網頁不需要太多解釋,跳原生事情就比較多了,我們公司就是這麼蛋疼,但是需求下來了也沒辦法。之前解決方法都比較傻,基本就是寫死那樣固定跳哪幾個原生介面,但是需求一直再變,程式也就自然要變。

於是和後台商量,直接傳ios的控制器名稱和安卓的活動名稱來指定跳轉哪個介面。基本上的意思就是通過後台傳來的字串轉化成控制器型別再例項化之後跳轉。於是上網搜尋通過字串獲取型別等,有用的資訊獲取了一些,但是還是碰到一些坑與大家分享一下!

相信搜尋過這類問題的朋友都知道nsclassfromstring這個方法,通過字串獲取型別,我也看過幾片部落格介紹,基本都是通過如下方法

letnamespace =

bundle

.main

.infodictionary

!["cfbundleexecutable"]as

! string

letclsname = namespace

+"."

+"uiviewcontroller"

letcls =

nsclassfromstring

(clsname)

as!

uiviewcontroller

.type

letvc = cls.

init()

在下已翻譯成swift3.0的寫法,當時我也是這樣跟著寫,namespace用來幹啥的也不知道,但是發現直接崩潰了,cls是nil的。然後又試著去掉namespace發現又成功了,心裡其實默默噴了

句什麼爛部落格,然後就開始用自己專案自定義的控制器,結果一執行妥妥的崩潰了。過程糾結了幾次,最終是把namespace又給加上了,然後就成功了,於是滿懷好奇的列印了一下namespace

,發現其實是專案名稱,然後恍然大悟,因為自定義的控制器肯定是在自己的專案裡的嘛,所以需要加上namespace命名空間,但是uiviewcontroller是uikit框架裡的嘛,這樣一想沒毛病

,其實後來還試過把uiviewcontroller

換成string,不加命名空間的情況下也是行不通,當時更加納悶了,難道之前的假設不成立?後來也是仔細一想,string是swift的類,但是nsclas

sfromstring是ns開頭的,是oc裡的類,然後換成了nsstring試了一下,恩,沒毛病的。在下總結也是比較口語,希望有大神可以出來比較權威的解釋一下!

swift 過濾字串 Swift 字串

swift 字串 swift 字串是一系列字元的集合。例如 hello,world 這樣的有序的字元型別的值的集合,它的資料型別為 string。建立字串 你可以通過使用字串字面量或 string 類的例項來建立乙個字串 import cocoa 使用字串字面量 var stringa hello,...

iOS中通過字串建立類 Swift

開發中可能會經常遇到動態建立類的情況,有時候是根據伺服器返回的字段進行處理,在oc中很簡單,直接通過nsclassfromstring方法即可,但是在swift中,要加上命名空間才能夠建立,具體如下 1 命名空間的獲取,這個要動態獲取或者直接寫死,直接寫死的話,如果改了專案名字的話就不能用了,所以最...

java字串編碼型別獲取

漢字編碼是一項較為麻煩的事情,弄不好就會造出些誰都看不懂的亂碼。比如我想做個針對漢字 的爬蟲系統,需要對非特定的頁面進行資料解析處理,而此時我所訪問的頁面編碼格式未知,如果不能正確處理頁面編碼,則很難獲得我們理想中的資料。通常這時候可能有幾種選擇 一是根據response的contenttype獲得...