我的情況是這樣的:獲取對象 - 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
文件。
任何幫助/提示/指示,非常感謝!
檢查有問題的容器的構建設置並查看'使用傳統快速'設置爲false/off – Multinerd
swift3中的Any和AnyObject存在一些變化 –