【问题标题】:cannot call value of non-function type 'OnAckCallback' in Swift 3.0无法在 Swift 3.0 中调用非函数类型“OnAckCallback”的值
【发布时间】:2016-11-04 12:08:29
【问题描述】:

在我的Swift2 中,我有一个有效的功能:

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'

该方法来自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)
}

如何修复我的代码以便编译?

【问题讨论】:

    标签: ios swift socket.io swift3


    【解决方案1】:

    我在更新到 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")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多