【问题标题】:Could not cast value of type 'NSURL' to 'SocketIO.SocketManagerSpec无法将“NSURL”类型的值转换为“SocketIO.SocketManagerSpec”
【发布时间】:2018-01-24 06:34:33
【问题描述】:

我在 Swift 4 中使用 socket,但出现此错误

 let url = URL(string: SOCKET_URL)
     let nsp = "log=\(true),forcePolling=\(true)"
     self.socket = SocketIOClient(manager: url! as! SocketManagerSpec,nsp:nsp)
     self.socket?.connect()   
     socket?.on(clientEvent: .connect) {data, ack in
         print("socket connected")
     }
     socket?.on("currentAmount") {data, ack in
         guard let cur = data[0] as? Double else { return }
         self.socket?.emitWithAck("canUpdate", cur).timingOut(after: 0){data in
             self.socket?.emit("update", ["amount": cur + 2.50])
         }
         ack.with("Got your currentAmount", "dude")
     }
     socket?.connect()
 }

请帮忙,过去两天我一直在这个问题上。 谢谢

【问题讨论】:

    标签: ios socket.io swift4


    【解决方案1】:

    我认为您不需要将URL 转换为SocketManagerSpec。

    请换行:

    self.socket = SocketIOClient(manager: url! as! SocketManagerSpec,nsp:nsp)
    

    与

    self.socket = SocketIOClient(socketURL: url)
    self.socket.nsp = nsp
    

    希望您的问题能得到解决。

    【讨论】:

    • 当我使用它时,它会在第一行显示“self.socket = SocketIOClient(socketURL: url)”错误-“在调用中缺少参数'nsp'的参数”。并在第二行“self.socket?.nsp = nsp”错误-“无法分配给属性:'nsp' 是一个'let'常量”....@Litle Dev
    • “不能分配给属性:'nsp' 是一个 'let' 常量”意味着 socket 是你的 let 常量,但我必须是 var 变量
    • 我已经做到了,但仍然显示错误,第一行错误没有解决
    • 那么请通过simple example here查看您的代码
    【解决方案2】:

    我们不能像通常对任何对象那样直接创建 SocketManagerSpec 对象。所以要创建一个套接字,我们需要创建管理器,然后我们需要创建带有命名空间的套接字

    所以替换

    self.socket = SocketIOClient(manager: url! as! SocketManagerSpec,nsp:nsp)
    

    与

    let manager = SocketManager(socketURL: URL(string:"http://192.x.x.x:3000")!)
    var defaultNamespaceSocket : SocketIOClient!
    var socket : SocketIOClient!
    
    defaultNamespaceSocket = manager.defaultSocket
    socket = manager.socket(forNamespace: "/swift")
    

    【讨论】:

    • 在您的解决方案中添加一些描述
    • 我们不能像通常对任何对象那样直接创建 SocketManagerSpec 对象。所以要创建一个套接字,我们需要创建管理器,然后我们需要创建带有命名空间的套接字。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多