Ios 无法强制转换类型为';NSURL';至';SocketIO.SocketManagerSpec

Ios 无法强制转换类型为';NSURL';至';SocketIO.SocketManagerSpec,ios,socket.io,swift4,Ios,Socket.io,Swift4,我在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(clientE

我在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()
 }
请帮帮我,过去两天我一直在这个问题上挣扎。
谢谢

我想你不需要把
URL
转换成
SocketManagerSpec

请更换线路:

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


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

我们不能像通常处理任何对象那样直接将SocketManagerSpec对象化。所以,为了创建套接字,我们需要创建管理器,然后我们需要创建具有名称空间的套接字

因此,替换


当我使用它时,在第一行显示“self.socket=SocketIOClient(socketURL:url)”错误-“调用中缺少参数“nsp”的参数”。在第二行“self.socket?.nsp=nsp”错误-“无法分配给属性:'nsp'是一个'let'常量”@Litle Dev“无法分配给属性:'nsp'是一个'let'常量”表示
socket
是您的
let
常量,但我必须是
var
变量我已经这样做了,但仍然显示错误,第一行错误怎么办?它没有解决。然后,请检查您的代码,并在解决方案中添加一些说明。我们不能像通常对任何对象那样直接创建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")