OC中專案使用swift(持續更新中)

chenshipeng發表於2017-12-22

由於看了swift很久,但是不管換了什麼公司。專案都是OC的,無奈一直使用的是OC,這次決定把專案改成混編的。以下是遇到的坑:

1.首先是cocoapods檔案報錯,比如,在XXX-bridging-Header.h中找不到AFNetworking.h報錯,因為程式碼中使用的是import "AFNetworking.h".我的cocoapods使用了use_frameworks!,網上找的資料也沒有顯示說一定要使用import <AFNetworking/AFNetworking.h>。但是本人是通過這樣解決的。

2.本以為XXX-bridging-Header.h匯入之前OC裡面的pch裡面的內容就行,沒想到還是各種報錯,匯入的這些檔案中如果使用了cocoapods裡面的第三方庫,還是要使用import<>形式,而不會import""。

3.對於OC裡面定義的巨集,如果是複雜的,比如顏色值,在swift中就不能使用了,只能再寫extension了,感覺這個好雞肋!!!

4.Could not start debugserver on "xxx" when trying to launch "xxx"報錯,重啟Xcode就好了。

5.在OC裡面已經寫好的擴充套件,在swift中如果想使用,比如 :

 righttNavItem("cls_add", hiName: "cls_add", sel:#selector(ReportsSummaryViewController.addCarDealer))

複製程式碼

這個方法是在OC中寫好的對UIViewController的擴充套件,swift中這個addCarDealer方法不能直接寫

private func addCarDealer(){  
}
複製程式碼

而是要在前面加上@objc 6、swift程式碼中使用ReactiveObjC,由於不會用CocoaSwift,所以還是在swift中使用ReactiveObjC,是一個輸入框的自動搜尋設定:

clsSearchBar?.textField.rac_textSignal().filter({ (text) -> Bool in
            return (text?.length)! > 2
        }).throttle(0.5).subscribeNext({ (text) in
            self.refresh()
        })
複製程式碼

7、Cannot load underlying module for 'Alamofire',我的解決辦法是xcode重啟,clean。

相關文章