2016-06-07 25 views
0

我試圖符合Objective-C中編寫的委託協議。一個特別需要的方法是給我麻煩。它看起來像這樣:實現一個帶有命名參數的委託

-(void)didReceiveData:(NSData*)data Device:(DFBlunoDevice*)dev; 

Xcode的雨燕自動完成建議我實現這樣的:

func didReceiveData(data: NSData!, device dev: DFBlunoDevice!){...} 

但以此來傳遞錯誤:

Does not conform to protocol 'DFBlunoDelegate'.

公告中的命名資本的區別參數「設備」。改變函數讀取

func didReceiveData(data: NSData!, Device dev: DFBlunoDevice!){...} 

導致新的錯誤:

Method 'didReceiveData(:Device:)' has different argument names from those required by protocol 'DFBlunoDelegate' ('didReceiveData(:device:)')

我如何能實現用斯威夫特命名參數Objective-C的委託方法?

+2

Objective-C的方法被命名爲資本化較差。 'Device:'應該是'device:'。也許這將有助於與Swift橋接。 – rmaddy

+3

你確定第一個錯誤實際上是由於這種特殊的方法而發生的嗎?沒有其他可能的不合格嗎? – luk2302

+0

@ luk2302是的,我確定。如果我只將didReceiveData標記爲可選,則編譯器認爲該類符合。 –

回答

0

這個問題是在問題的評論回答rmaddy:

The Objective-C method is named with poor capitalization. Device: should be device:. Maybe that will help when bridging to Swift.