Swift - 使用bindToPort调用时参数标签不正确

时间:2016-06-01 16:34:12

标签: ios swift cocoaasyncsocket

我试图在Swift中使用CocoaAsyncSocket库。

我想实现UDP服务器和客户端。我已经导入了库,这是我的方法实现之一:

func setupConnection(){
    var error : NSError?
    socket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())

    do {
        try socket.bindToPort(PORT, error: &error)
        try socket?.connectToHost(IP, onPort: PORT)
        try socket.beginReceiving()
    } catch _ {
        print(error)
    }
    send("ping")
}

不幸的是我在bindToPort上遇到了这个错误:

  

调用中的参数标签不正确(有' :错误:',预期   ' :接口:&#39)

查看库中bindToPort方法的声明,我有一个与我的实现相对应的原型。

- (BOOL)bindToPort:(UInt16)port error:(NSError **)errPtr

为什么即使原型得到尊重,我仍然会遇到此错误?

1 个答案:

答案 0 :(得分:2)

Objective-C函数动态地适应使用Swift的错误处理范例,throws而不是使用NSError参数。

  

如果Objective-C方法的最后一个非块参数是NSError **类型,则Swift将其替换为throws关键字,以指示该方法可能引发错误。如果Objective-C方法的error参数也是它的第一个参数,Swift会尝试通过从选择器的第一部分删除“WithError”或“AndReturnError”后缀(如果存在)来进一步简化方法名称。如果使用结果选择器声明了另一个方法,则不更改方法名称。 - Using Swift with Cocoa and Objective-C (Swift 2.2) - Error Handling