0

Swift 2 の SocketRocket (Objective-C ポッド) を使用しようとしています。ブリッジ ヘッダーを作成しています。

ここに私がしようとしているものがあります:

import SocketRocket
class WS3: NSObject, SRWebSocketDelegate {
    func websocket(webSocket: SRWebSocket!, 
                   didReceiveMessage message: AnyObject!) -> Void {
    }
}

コンパイラのエラー メッセージは次のとおりです。

Error:Error:Build failed with 1 error and 0 warnings in 1s 685ms
/Users/jao/Desktop/consulting/blackring/Black Ring/Black Ring/WS3.swift
    Error:Error:line (8)type 'WS3' does not conform to protocol 'SRWebSocketDelegate'
    x86_64
    Note:Note:class WS3: NSObject, SRWebSocketDelegate {
    Note:Note:      ^
    Note:Note:    public func webSocket(webSocket: SRWebSocket!, didReceiveMessage message: AnyObject!)
    Note:Note:                ^
SocketRocket.SRWebSocketDelegate
    Note:Note:protocol requires function 'webSocket(_:didReceiveMessage:)' with type '(SRWebSocket!, didReceiveMessage: AnyObject!) -> Void'

エラーメッセージが私がやるべきだと言っていることを正確にやっているように私には見えます。私は何を間違っていますか?

4

1 に答える 1

1

私はそれを考え出した。

didReceiveMessageメソッドはプロトコルで必須と宣言されています。問題はメソッドの署名にあります。didReceiveMessageメソッドの署名がプロトコルのメソッドの署名と一致しません。

それを置き換えます:

func websocket(webSocket: SRWebSocket!,
        didReceiveMessage message: AnyObject!) -> Void {
    }

と:

func webSocket(webSocket: SRWebSocket!,
    didReceiveMessage message: AnyObject!) {

}

これはまさに、必要なプロトコルのメソッドが欠落していることについて Xcode が不平を言っていることです。

最後にテストしましたが、正常に動作しています。

ヒント:この種のエラーを回避するには、Xcode の IntelliSense を使用してみてください。

于 2016-02-16T05:09:17.137 に答える