我在swift中开发一个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课程中实现这些委托方法时,我发现&#34; 定义与以前的值冲突&#34;
swift中实现的委托方法如下:
func socketIO(socket: SocketIO!, onFailWithError error: NSError!) {}
func socketIO(socket: SocketIO!, onError error: NSError!){}
func socketIO(socket: SocketIO!, didReceiveEvent packet: SocketIOPacket!) {}
如何解决这个问题?
答案 0 :(得分:1)
使用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!) {}
}
因此,尝试将委托方法的实现移出另一个函数,希望这也是您的问题。