2015-12-09 18 views
0

我正在嘗試編寫一些調用現有Objective C函數的Swift代碼。該目標C函數如下:使用Swift與需要塊作爲參數的Objective C方法進行交互

+(void) getCurrentUserprofileWithCompletion:(RequestCallback)completion {...} 

其中RequestCallback在.h文件中被定義爲:

typedef void (^RequestCallback) (ResponseInfo *responseInfo); 

我已經嘗試了一些不同的東西,但似乎沒有任何工作。看起來最合乎邏輯的我的代碼是:

let callback: (responseInfo: ResponseInfo) -> Void = {(responseInfo: ResponseInfo) -> Void in 
    if let organization: Organizations = Organizations.organizationWithId(orgId) { 
     completionBlock(false, nil) 
    } else { 
     self.switchOrganization(user, organization: organization, completionBlock: completionBlock) 
    } 
} 
Users.getCurrentUserprofileWithCompletion(callback) 

但是這是得到錯誤

不能轉換類型的值「(responseInfo:ResponseInfo) - >虛空」預期參數類型「 RequestCallback!」

有沒有人有任何想法我在做什麼錯在這裏?我搜索了互聯網尋找幫助,包括各種蘋果文檔,但無論是我失明還是誤讀,因爲似乎沒有任何工作。

在此先感謝!

回答

1

只需卸下型規範responseInfo一個使用類型RequestCallback

let callback: RequestCallback = { responseInfo -> Void in 
    if let organization: Organizations = Organizations.organizationWithId(orgId) { 
     completionBlock(false, nil) 
    } else { 
     self.switchOrganization(user, organization: organization, completionBlock: completionBlock) 
    } 
} 

Users.getCurrentUserprofileWithCompletion(callback) 
+0

謝謝你這麼多強麥!我不知道爲什麼我在Swift中使用這種語法的一個心理障礙。我花了兩年時間在Scala中編寫代碼,所以這些概念對我來說都不是什麼新東西,但是我發現自己只是瞪着這個。 :/ –

相關問題