【问题标题】:Swift Cannot invoke initializer for type 'WebSocket' with an argument list of type '(url: URL)Swift 无法使用类型为 '(url: URL) 的参数列表调用类型为 'WebSocket' 的初始化程序
【发布时间】:2020-12-08 14:58:04
【问题描述】:

我在 swift 中有以下代码用于 web-socket 通信,但是当我构建代码时出现错误。

代码:

import Foundation
import Starscream

class StarscreamWebSocket: WebSocketProvider {

    var delegate: WebSocketProviderDelegate?
    private let socket: WebSocket
    
    init(url: URL) {
        self.socket = WebSocket(url: url)
        self.socket.delegate = self
    }
    
    func connect() {
        self.socket.connect()
    }
    
    func send(data: Data) {
        self.socket.write(data: data)
    }
}

错误:

Cannot invoke initializer for type 'WebSocket' with an argument list of type '(url: URL)'

可能是什么问题。

【问题讨论】:

    标签: ios swift starscream


    【解决方案1】:

    此框架的WebSocket 类没有一个采用单个URL 参数的初始化程序。它有两个初始化器:

    public init(request: URLRequest, engine: Engine)
    public convenience init(request: URLRequest, certPinner: CertificatePinning? = FoundationSecurity(), compressionHandler: CompressionHandler? = nil, useCustomEngine: Bool = true)
    

    您似乎想使用第二个。只需使用您的URL 创建一个URLRequest

    let request = URLRequest(url: url)
    self.socket = WebSocket(request: request )
    

    【讨论】:

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