2016-09-21 29 views
0

我的情況是這樣的:獲取對象 - Cocoapod API在斯威夫特消耗3.0應用

我寫的OBJ-C和分佈式作爲一個Cocoapod SDK。它目前由我和我的用戶應用程序使用。我的應用程序主要是在Swift中編寫的,並且我使用橋接頭來使用該窗格,因爲我的SDK和其他第三方pod的消費不會導出爲框架,因此在podfile中使用use_frameworks!將不起作用。

我已經使用XCode 8遷移工具將我的應用程序遷移到了Swift 3.0,但現在它不會針對Cocoapod SDK進行編譯。

例如 - 遷移後調用我的SDK:

SparkCloud.sharedInstance().getDevices({ (devices:[Any]?, error:Error?) -> Void in ... 

將導致以下編譯時錯誤:

Cannot convert value of type '([AnyObject]?, NSError?) -> Void' to expected argument type '(([Any]?, Error?) -> Void)?'

這是有道理的,因爲NSError現在誤差和無類型可爲空的NSArray從Obj-c現在解析爲[Any],但是我的SDK沒有反映出這一點。

的OBJ-C SDK相關的信息是:

-(NSURLSessionDataTask *)getDevices:(nullable void (^)(NSArray * _Nullable sparkDevices, NSError * _Nullable error))completion; 

我想在我的OBJ-C函數頭部添加NS_REFINED_FOR_SWIFT和編寫一個包裝斯威夫特文件揭露了「正確」的界面,雨燕3.0,但我對於如何在我的應用中打包和使用這個新的Swift「頭文件」文件感到困惑,因爲SDK是Cocoapod庫(不是框架),以及如何修改podspec文件。

任何幫助/提示/指示,非常感謝!

+0

檢查有問題的容器的構建設置並查看'使用傳統快速'設置爲false/off – Multinerd

+0

swift3中的Any和AnyObject存在一些變化 –

回答

0

如果你想在xcode 8中使用Swift 2.3,那麼你可以使用傳統。

+0

3.0是2.3的替代。他將不得不最終更新它。 – Multinerd