我正在迅速开发一个iOS应用程序,它是用目标C编写的socket.io库类。

当我将Xcode更新为6.3.2时,出现了很多错误

@protocol SocketIODelegate <NSObject>
@optional
- (void) socketIO:(SocketIO *)socket didReceiveMessage:(SocketIOPacket *)packet;
- (void) socketIO:(SocketIO *)socket didReceiveJSON:(SocketIOPacket *)packet;
- (void) socketIO:(SocketIO *)socket didReceiveEvent:(SocketIOPacket *)packet;
- (void) socketIO:(SocketIO *)socket didSendMessage:(SocketIOPacket *)packet;
- (void) socketIO:(SocketIO *)socket onError:(NSError *)error;
- (void) socketIO:(SocketIO *)socket onFailWithError:(NSError *)error;
@end


当我在swift类中实现这些委托方法时,我得到“与先前值的定义冲突”

快速实现的委托方法如下:

func socketIO(socket: SocketIO!, onFailWithError error: NSError!) {}

func socketIO(socket: SocketIO!, onError error: NSError!){}

func socketIO(socket: SocketIO!, didReceiveEvent packet: SocketIOPacket!) {}


如何解决这个问题?

最佳答案

使用Xcode 6.3.2和实现委托方法对我来说很好。

在这里阅读以下SO问题后,我只能重现您提到的错误消息:Unable to overload function in viewDidLoad() in swift

这确实无法为我编译,因为定义与先前的值冲突:

func whatever() {
    func socketIO(socket: SocketIO!, onFailWithError error: NSError!) {}

    func socketIO(socket: SocketIO!, onError error: NSError!){}

    func socketIO(socket: SocketIO!, didReceiveEvent packet: SocketIOPacket!) {}
}


因此,请尝试将委托方法的实现移出另一个函数,希望这也是您的问题。

关于ios - 定义与先前的值冲突-Xcode 6.3.2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30933764/

10-11 22:15