2016-06-07 20 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.