我正在使用Objective-C编写的应用程序中工作,我们希望开始将一些Swift集成到其中。
我在Swift中编写了一个简单的视图控制器类,并且在应用程序中工作它必须符合用Objective-C编写的协议。在我的Swift类中,我有以下声明:
@objc class SwfViewController: UIViewController, theProtocolName {
//some code
}
在我的桥接头文件中,我有引用的协议的类名。
#import "theProtocolName.h"
我已经实现了协议中列出的所有必需方法,但仍然出现错误
SwfViewController不符合协议'theProtocolName'
我对Swift很新,可能很容易遗漏一些东西。有什么建议要检查?谢谢!
答案 0 :(得分:2)
您应该考虑到方法的Swift签名与objective-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!){
}
}
请注意id成为AnyObject和Obj-C引用被翻译!作为隐式解包的选项。
答案 1 :(得分:0)
通常,此错误意味着您的类缺少必需的方法,这是协议要点的一部分。该课程似乎意识到它需要遵循您已经讲过的协议,但现在需要定义所需的部分。
您应该能够通过单击它来扩展错误消息,以找出缺少的部分。