Objective-C 协议在 Swift 中无法识别
Objective-C protocol not recognized in Swift
我正在开发一个用 Objective-C 编写的应用程序,我们想开始将一些 Swift 集成到其中。
我在 Swift 中编写了一个简单的视图控制器 class,要在应用程序中工作,它必须符合在 Objective-C 中编写的协议。在我的 Swift class 中,我有以下声明:
@objc class SwfViewController: UIViewController, theProtocolName {
//some code
}
在我的桥接头文件中,我引用了 class 协议名称。
#import "theProtocolName.h"
我已经实现了协议中列出的所有必需方法,但我仍然收到一条错误消息
SwfViewController does not conform to protocol 'theProtocolName'
我是 Swift 的新手,很容易漏掉一些东西。有什么检查的建议吗?谢谢!
一般来说,此错误意味着您的 class 缺少必需的方法,这是协议要点的一部分。 class 似乎意识到它需要遵循您告诉它的协议,但现在需要定义所需的部分。
您应该能够展开错误消息,方法是单击它以找出缺少的部分。
您应该考虑到方法的 Swift 签名与 objective-c 略有不同。例如:
这样的协议:
@protocol MyProtocol <NSObject>
- (void)didFinish:(MyClass *)class withError:(id)errorMessage;
@end
在Swift中符合这个协议的class应该是:
@objc class SwfViewController: UIViewController, MyProtocol {
func didFinish(whatEveryouWant1: UIViewController!, withError whatEverYouWant2: AnyObject!){
}
}
请注意 id 变为 AnyObject 并且 Obj-C 引用翻译为 !作为隐式展开的选项。
我正在开发一个用 Objective-C 编写的应用程序,我们想开始将一些 Swift 集成到其中。
我在 Swift 中编写了一个简单的视图控制器 class,要在应用程序中工作,它必须符合在 Objective-C 中编写的协议。在我的 Swift class 中,我有以下声明:
@objc class SwfViewController: UIViewController, theProtocolName {
//some code
}
在我的桥接头文件中,我引用了 class 协议名称。
#import "theProtocolName.h"
我已经实现了协议中列出的所有必需方法,但我仍然收到一条错误消息
SwfViewController does not conform to protocol 'theProtocolName'
我是 Swift 的新手,很容易漏掉一些东西。有什么检查的建议吗?谢谢!
一般来说,此错误意味着您的 class 缺少必需的方法,这是协议要点的一部分。 class 似乎意识到它需要遵循您告诉它的协议,但现在需要定义所需的部分。
您应该能够展开错误消息,方法是单击它以找出缺少的部分。
您应该考虑到方法的 Swift 签名与 objective-c 略有不同。例如:
这样的协议:
@protocol MyProtocol <NSObject>
- (void)didFinish:(MyClass *)class withError:(id)errorMessage;
@end
在Swift中符合这个协议的class应该是:
@objc class SwfViewController: UIViewController, MyProtocol {
func didFinish(whatEveryouWant1: UIViewController!, withError whatEverYouWant2: AnyObject!){
}
}
请注意 id 变为 AnyObject 并且 Obj-C 引用翻译为 !作为隐式展开的选项。