2016-11-04 4 views
2

で私Swift2に私が働いていた機能だった:は非関数型の値を呼び出すことはできません「OnAckCallback」スウィフト3.0

func connectToServerWithNickname(_ nickname: String) { 
    print("CONNECTING TO SOCKET SERVER \(nickname)") 
    socket.emitWithAck("connectUser", nickname)(timeoutAfter: 3) { data in 
     print("CONNECTED FOR SURE") 
    } 
} 

を私はSwift3に私のコード全体を移動したとき、私はエラーを取得しています:

cannot call value of non-function type 'OnAckCallback' 

enter image description here

その方法はsocket.ioライブラリから来て、それがこのようにそこになります。

/// Sends a message to the server, requesting an ack. Use the onAck method of SocketAckHandler to add 
/// an ack. 
public func emitWithAck(_ event: String, _ items: SocketData...) -> OnAckCallback { 
    return emitWithAck(event, with: items) 
} 
/// Same as emitWithAck, but for Objective-C 
public func emitWithAck(_ event: String, with items: [Any]) -> OnAckCallback { 
    return createOnAck([event] + items) 
} 

private func createOnAck(_ items: [Any]) -> OnAckCallback { 
    currentAck += 1 

    return OnAckCallback(ackNumber: currentAck, items: items, socket: self) 
} 

私のコードをコンパイルするにはどうすればよいですか?

答えて

2

Socket.IO-client-swift 8.2.0にアップデートした後、同じ問題が発生しました。ここであなたが必要とする変更があります。

ワーキングコード

socket.emitWithAck("connectUser", nickname).timingOut(after: 3, callback: { data in 
    print("CONNECTED FOR SURE") 
}) 


前のコード、エラーを発生させた

socket.emitWithAck("connectUser", nickname)(timeoutAfter: 3) { data in 
    print("CONNECTED FOR SURE") 
} 
関連する問題