2016-02-15 3 views
0

Я пытаюсь использовать SocketRocket (объект Object-C) из Swift 2. У меня есть заголовок моста.Невозможно скомпилировать код Swift 2 в библиотеку Objective C (pod)

Вот что я пытаюсь:

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' 

Он смотрит на меня, как я делаю то, что говорит сообщение об ошибке, я должен быть делает. Что я делаю не так?

ответ

1

Я понял.

didReceiveMessage способ заявлен в протоколе. Проблема заключается в вашей сигнатуре метода. Ваша сигнатура метода didReceiveMessage не соответствует сигнатуре метода протокола.

Заменить:

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

С:

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

} 

Это именно то, что Xcode жалуется, что требуемый метод протокола отсутствует.

Я проверил его на своем конце, и он отлично работает.

Совет: Попробуйте использовать Intellisense Xcode, чтобы избежать таких ошибок.

+0

Обратите внимание, что проблема в названии функции ... Вы правы, но я узнал ее, читая ваш ответ во второй раз :-). проголосовали! – user3441734

+0

Я также нашел неверный случай. Я не знаю, почему это заняло у меня столько времени. Что в IntelliSense? –

+0

Intellisense - это когда вы вводите несколько начальных символов, тогда xcode дает вам некоторые связанные предложения, затем выбирает соответствующее предложение и нажимает Enter, все это будет написано для вас автоматически. Как и в этом случае, я просто соглашаюсь с протоколом и набираю webSocket после этого, я только что выбрал подходящий метод из его предложений. –

Смежные вопросы