Swift

时间:2015-07-21 18:18:04

标签: objective-c swift interop protocols

我正在使用Objective-C编写的应用程序中工作,我们希望开始将一些Swift集成到其中。

我在Swift中编写了一个简单的视图控制器类,并且在应用程序中工作它必须符合用Objective-C编写的协议。在我的Swift类中,我有以下声明:

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

在我的桥接头文件中,我有引用的协议的类名。

#import "theProtocolName.h"

我已经实现了协议中列出的所有必需方法,但仍然出现错误

  

SwfViewController不符合协议'theProtocolName'

我对Swift很新,可能很容易遗漏一些东西。有什么建议要检查?谢谢!

2 个答案:

答案 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)

通常,此错误意味着您的类缺少必需的方法,这是协议要点的一部分。该课程似乎意识到它需要遵循您已经讲过的协议,但现在需要定义所需的部分。

您应该能够通过单击它来扩展错误消息,以找出缺少的部分。