在 Obj-C 类中找不到 Swift 协议声明

Cod*_*ger 3 objective-c swift-protocols swift3

我建立了ClassSwift那类及其协议。我正在使用Obj-C启动项目,但我得到以下错误,而编译我的项目。

找不到“SpeechRecognizerDelegate”的协议声明;你的意思是“SFSpeechRecognizerDelegate”?

谁能指导我如何在我的 Obj-C 类中使用 Swift 类协议。

这是我的 Swift 代码:

protocol SpeechRecognizerDelegate : class  {
    func speechRecognitionFinished(_ transcription:String)
    func speechRecognitionError(_ error:Error)
}


class SpeechRecognizer: NSObject, SFSpeechRecognizerDelegate {
    open weak var delegate: SpeechRecognizerDelegate?

}
Run Code Online (Sandbox Code Playgroud)

Obj-C 中的协议使用:

#import "ARBot-Swift.h"

@interface ChatScreenViewController : JSQMessagesViewController <SpeechRecognizerDelegate>
Run Code Online (Sandbox Code Playgroud)

如果需要更多信息,请告诉我。

提前致谢。

小智 7

在斯威夫特:

@objc public protocol YOURSwiftDelegate {
    func viewReceiptPhoto()
    func amountPicked(selected: Int)
}

class YourClass: NSObject {
    weak var delegat: YOURSwiftDelegate?
}
Run Code Online (Sandbox Code Playgroud)

在 Objective-C headerFile.h 中

@protocol YOURSwiftDelegate;

@interface YOURController : UIViewController < YOURSwiftDelegate >
Run Code Online (Sandbox Code Playgroud)

在 Objective-C Implementation.m 中

SwiftObject * swiftObject = [SwiftObject alloc] init];
swiftObject.delegate = self
Run Code Online (Sandbox Code Playgroud)


Ana*_*mje 4

在 Swift 文件中像这样定义Swift协议。

@objc protocol SpeechRecognizerDelegate: class{
  func speechRecognitionFinished(_ transcription:String)
  func speechRecognitionError(_ error:Error)
}
Run Code Online (Sandbox Code Playgroud)

在项目设置中创建一个 Swift 模块,然后使用它。您可以在这里找到混合语言编码的完整博客。

然后在 Objective C 类中使用 Protocol,

我们需要在Objective C文件中添加协议-

#import "ARBot-Swift.h"

@interface ChatScreenViewController : JSQMessagesViewController <SpeechRecognizerDelegate>
Run Code Online (Sandbox Code Playgroud)

然后你需要遵守协议方法 -

- (void)viewDidLoad {
    [super viewDidLoad];
    SpeechRecognizer * speechRecognizer = [[SpeechRecognizer alloc] init];
    speechRecognizer.delegate = self;
}


#pragma mark - Delegate Methods
-(void)speechRecognitionFinished:(NSString *) transcription{
   //Do something here
}

-(void)speechRecognitionError:(NSError *) error{
   //Do something here
}
Run Code Online (Sandbox Code Playgroud)