swift中有一些比較好的框架,比如繪圖框架charts,最近項目中剛好用到,通過Pod的方式直接導入,xcode會自動生成charts-swift.h的文件,然后在需要導入的地方import <charts-swift.h>即可
但是,通過pod導入的第三方項目如果需要做自定義定制,就沒辦法修改里面的內容,這樣很難受,所以只有不通過pod的方式導入,直接將source文件拖入到工程中,這就涉及到了oc中橋接swift項目的一些問題
使用網上的一些方法和設置並沒能解決我的問題,然后會各種報錯,通過各種嘗試,總算是將oc中橋接swift的問題解決了,一下是解決的步驟
-
到github 下載charts官方demo,找到source,將整個source文件拖入到工程中,注意Supporting Files中的文件也一起拖入,將info.plist文件名字修改為chart_info.plist,為了防止和工程中的info.plist文件名沖突
-
將source文件拖拽到新的項目中,新建一個swift文件,繼承NSObject,名字隨意,這個時候,xcode會提醒是否創建一個xxx-Bridging-Header.h的swift橋接文件,選擇創建
-
在xxx-Bridging-Header.h添加Supporting Files中的.h文件 這里是Charts.h
-
command + b編譯,這個時候xcode會自動生成一個 ChartsDemo-Swift.h ChartsDemo為你的xcode項目名, 在需要使用到charts的地方,#import <ChartsDemo-Swift.h>即可使用swift中方法和類了
-
修改charts中源碼,再command+b xcode又會生產一份新的ChartsDemo-Swift文件 大工告成
-
使用
可能遇到的問題:
-
需要設置defines module為YES網的很多答案中都提到了這個一點,如果出現一些問題,可以嘗試設置一下,具體位置(我暫時沒有發現設置這個屬性設置YES or NO的區別)
-
提示swift版本過低
-
添加swift文件時並不主動提示創建橋接文件(一般比老一點的項目好像都會不提示),這個時候就需要手動創建橋接文件了(xxx-Bridging-Header.h)
- 創建header file文件
- 命名header file文件名 如果我的工程target名叫TKDemo,所以這里就創建TKDemo-Bridging-Header文件名
- 設置TKDemo-Bridging-Header在項目中的路徑 如圖位置(路徑根據橋接文件的實際位置來設置) 注意
- 創建header file文件