2015-07-21 3 views
-1

Я работаю в приложении, написанном в Objective-C, и мы хотели бы начать интегрировать в него Swift.Протокол Objective-C не распознан в Swift

Я написал простой класс контроллера вида в Swift и для работы в приложении он должен соответствовать протоколу, написанному в Objective-C. В моем классе Swift у меня есть следующее заявление:

@objc class SwfViewController: UIViewController, theProtocolName { 
    //some code 
} 

В моем файле заголовка шунтирующего У меня есть имя класса протокола ссылается.

#import "theProtocolName.h" 

Я выполнил все необходимые методы, перечисленные в протоколе, но до сих пор я получаю сообщение об ошибке говорящее

SwfViewController не соответствует протоколу «theProtocolName»

Я m довольно новый для Swift и мог бы легко оставить что-то. Любые предложения о том, что проверить? Благодаря!

+0

Не могли бы вы добавить код протокола и реализацию SwfViewController? Вероятно, вы неправильно указали методы в SwfViewController. – agy

ответ

2

Вы должны принять во внимание, что подпись Swift для методов немного отличается от цели-c. Например:

протокол, как это:

@protocol MyProtocol <NSObject> 

    - (void)didFinish:(MyClass *)class withError:(id)errorMessage; 

@end 

Класс, который соответствует этому протоколу в Swift должен быть:

@objc class SwfViewController: UIViewController, MyProtocol { 
    func didFinish(whatEveryouWant1: UIViewController!, withError whatEverYouWant2: AnyObject!){ 

    } 
} 

Пожалуйста, обратите внимание, идентификатор становится AnyObject и Obj-C ссылки переводятся с ! как неявно развернутые варианты.

0

Обычно эта ошибка означает, что в вашем классе отсутствуют необходимые методы, которые являются частью точки протокола. Класс, похоже, понимает, что ему нужно следовать протоколу, о котором вы ему рассказывали, но теперь нужно определить необходимые фрагменты.

Вы должны иметь возможность развернуть сообщение об ошибке, щелкнув по нему, чтобы узнать, какие части отсутствуют.

+1

«Вы должны иметь возможность развернуть сообщение об ошибке, щелкнув по нему, чтобы узнать, какие части отсутствуют». <- Я не думаю, что вы можете сделать это в Свифт. – nhgrif

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