1. 程式人生 > >OC中關於NSClassFromString獲取不到Swift類的解決方案

OC中關於NSClassFromString獲取不到Swift類的解決方案

在OC和Swift混編的過程中發現在OC中通過NSClassFromString獲取不到Swift中的類,調研了一下發現問題所在,下面是我的解決方案:

問題的發現過程

UIViewController *destinationVC = [[NSClassFromString(demoInfoModel.demoVCName) alloc] init];
        [self.navigationController pushViewController:destinationVC animated:YES];

在使用以上程式碼時發現,Swift的通過類名在OC中通過NSClassFromString獲取不到這個類
,返回值為nil

問題的原因和解決方法

經過一番查詢後發現是因為在OC中Swift類中的所有類的介面都轉到了一個叫YourProduct_Example-swift.h的標頭檔案中,YourProduct是你的工程名,其中的類名和方法都已經改變了,我們需要做的就行進入到這個標頭檔案中,去找到對應的類名就行了,如下圖所示:

這裡寫圖片描述

紅框裡面的字串就是你Swift裡面轉成OC後的類名,將之前的類名替換就行了,比如:

// 我之前的類名是WCLLoadingViewViewDemoVC
NSClassFromString(@"WCLLoadingViewViewDemoVC")
// 替換到OC中就是_TtC19CRAnimation_Example20WCLLoadingViewDemoVC
NSClassFromString(@"_TtC19CRAnimation_Example20WCLLoadingViewDemoVC")

通過以上步驟就能轉換成功了

相關推薦

在微信瀏覽器 location.reload() 刷新解決方案(直接調用方法)

arc time lac load() 直接 新解 () light 刷新 1、問題   在微信瀏覽器中,需要時刷新當前頁面。   正常情況下我們直接使用 location.reload 方法來刷新。 2、解決方法 function realod(){

HTTPS證書鏈完整的解決方案

問題 tomcat8.5配置pfx格式ssl證書後,https可以正常訪問,但是(問題與下面這個情況相同): 由於我們的部分業務場景是在微信(WebView)中開啟https的web頁面,在測試過程中卻發現了一個問題,在Chrome中測試完全正常的https

整理webView控制元件載入H5網頁視訊播放了的解決方案

做專案時碰上載入h5頁面的視訊播放不了 結合網上資源 整理到自己程式碼中問題解決,做記錄如下: 1.在webView的Activity配置裡面加上: android:hardwareAccelerated=”true” 2.設定webview

umeng訊息推送獲取到DeviceToken解決方案

1.請先檢查使用Demo能否正常工作2.確定是否將appkey、MessageSecret、以及包名都更換為開發者所申請的相應值3.確定是否將Manifest裡的幾個intent的字首更換了如果使用的是自定義IntentService :確定是否呼叫PushAgent裡

OC關於NSClassFromString獲取Swift解決方案

在OC和Swift混編的過程中發現在OC中通過NSClassFromString獲取不到Swift中的類,調研了一下發現問題所在,下面是我的解決方案: 問題的發現過程 UIViewController *destinationVC = [[N

Springbootrequest.getInputStream()獲取到流解決辦法

問題描述 使用Springboot整合wpsoffice線上編輯儲存時獲取不到流。在Springboot程式啟動後,會預設新增OrderedCharacterEncodingFilter和HiddenHttpMethodFilter過濾器。在HiddenHttpMe

MyBatis五種成功對映資料庫欄位與實體屬性一致的解決方案

在Mybatis中,當根據某欄位查詢資料庫資訊時,如果資料庫欄位名與實體類屬性名稱不一致,查詢時,會出現賦值不上的情況,值為Null。本次將給出五種方案,其中方案三、四為推薦。例如:根據學號sno查詢學生資訊1.資料庫表student欄位名稱以及型別:2.資料庫表內容:3.實

IE11使用window.open()方法獲取到引數解決方法

在父頁面中使用window.open()的方法開啟 <pre class="javascript" name="code"> var selectUrl = USER_SELECT_URL + params.join("&"); var

解決app內嵌h5ios獲取到title,vue router 修改title(IOS 下動態改變title失效)

在ios下app  設定document.title = "titleName" 失效,原因是在IOS webview中網頁標題只加載一次,動態改變是無效的。 vue中npm install  vue-wechat-title元件 在路由配置中新增  meta物件 如:

MyBatis學習筆記-03.MyBatis五種成功對映資料庫欄位與實體屬性一致的解決方案

在Mybatis中,當根據某欄位查詢資料庫資訊時,如果資料庫欄位名與實體類屬性名稱不一致,查詢時,會出現賦值不上的情況,值為Null。本次將給出五種方案,其中方案三、四為推薦。例如:根據學號sno查詢學生資訊1.資料庫表student欄位名稱以及型別:2.資料庫表內容:3.實

IdeaWeb專案Jsp檔案找解決方法

在jsp檔案中用useBean建立一個與某個java物件相關的指令碼變數,結果出現找不到類的異常,例如下圖: 用useBean建立一個Employee物件,但出現了Employee cannot be resolved to a type錯誤。 最後發現

idea 多模塊依賴時 tomcat啟動 找解決辦法

exception 多模塊 ont 圖片 ava .com com http 模塊 三個模塊,moduleA、moduleB、moduleC,A依賴B和C,在idea中使用tomcat部署moduleA子模塊時,一直提示java.lang.ClassNotFoundExce

cdh平臺搭建過程主機受管解決方案

序言 實驗室的叢集中一直安裝的都是原生的hadoop、hbase等生態圈軟體,最近由於給出的一個技術方案涉及到hbase-indexer(雖然目前還沒用上),而hbase-indexer暫時沒找到Apache版本,需要自己編譯,而在本機上好像出現了一些錯誤,因此選擇使用cdh版本的h

在STS(Spring Tool Suite)配置Maven,以及配置成功的解決方案

Spring Tool Suite  Spring 專案快速開發的工具集合,簡稱sts。 主要用於快速的開發Spring專案,我們不用再去編輯繁瑣的xml配置檔案,而是由工具自動生成。   STS下載 1.可自行到官網下載,選擇需要版本下載 2.ST

SpringBoot打jar包或war包獲取到資原始檔解決辦法

問題描述 在開發過程中我們經常會碰到要在程式碼中獲取資原始檔的情況,而我在最近將原有的Tomcat的原生專案遷移到SpringBoot專案中時碰到一個問題,就是在本地執行時,獲取本地的xml資原始檔是能夠獲取到的,但是專案打成war包然後將其部署到Tomcat中執行時,就會發生問題,報找不到資原始檔的錯誤。

關於maven專案修改的JS生效的解決方案

1. 問題描述 昨天下午博主在開發學習的過程中,碰到一個修改了JS無法生效的問題,折騰我不少的時間,現將百度到的解決方案總結一下,以便下次碰到類似問題能夠最快的找到解決方案 2 解決方案 2.1 方案1 點選File->setting,搜尋框輸入compiler,如下圖所示: 然後點選ap

Struts2JSTL標籤起作用解決辦法

1.設定某個jsp頁面使用el表示式,需要在jsp頁面加上(控制單個頁面) <%@ page isELIgnored="false"%>  //我設定了這點就可以了, 2.看你的web.xml檔案中頭的引用應該是 2.4.xsd <web-app id="WebApp_

【exe】electron專案使用jquery生效的解決方法

electron專案中jquery沒法用的解決方法,比較簡單的方式就是在引入jquery之前加入一下程式碼: <script> window.nodeRequire = require; delete window.require; delete window.exports

javascript new Date().toLocaleString()在不同瀏覽器的結果一致的解決方法

Date.prototype.toLocaleString = function () { return this.getFullYear()+’-’+(this.getMonth()+1)+’-’+this.getDate()+’ &nbsp’+this.getHou

EasyUI 關於 panel,window,dialog 通過href載入頁面,頁面引用的js執行的解決方案

詳細說明請參閱:http://www.jeasyuicn.com/post-49.html href 指向的頁面不能是完整的html頁面,需要是不包含html,body,head標籤的html片段, 如 <link href="/resources/css/dhteu