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的委託方法?
Objective-C的方法被命名爲資本化較差。 'Device:'應該是'device:'。也許這將有助於與Swift橋接。 – rmaddy
你確定第一個錯誤實際上是由於這種特殊的方法而發生的嗎?沒有其他可能的不合格嗎? – luk2302
@ luk2302是的,我確定。如果我只將didReceiveData標記爲可選,則編譯器認爲該類符合。 –