Ios 如何设置SFSpeechRecognitionTask的委托?

Ios 如何设置SFSpeechRecognitionTask的委托?,ios,objective-c,delegates,swift3,speech-recognition,Ios,Objective C,Delegates,Swift3,Speech Recognition,在大多数情况下,设置委托就像在类中实现委托协议一样简单,并将该类的实例声明为正在使用的任何对象的实例的委托 实际上,我对SFSpeechRecognitor使用了相同的基本概念,它在我的代码中属于相同的语音框架。(伪代码示例): 但是,SFSpeechRecognitionTask似乎没有可以设置的委托属性。我尝试在我的课堂上实现“SFSpeechRecognitionTaskDelegate”协议,希望它能神奇地工作。但是,似乎从未调用过委托函数。哪一种是有意义的,因为它无法知道我的视图控制器

在大多数情况下,设置委托就像在类中实现委托协议一样简单,并将该类的实例声明为正在使用的任何对象的实例的委托

实际上,我对SFSpeechRecognitor使用了相同的基本概念,它在我的代码中属于相同的语音框架。(伪代码示例):

但是,SFSpeechRecognitionTask似乎没有可以设置的委托属性。我尝试在我的课堂上实现“SFSpeechRecognitionTaskDelegate”协议,希望它能神奇地工作。但是,似乎从未调用过委托函数。哪一种是有意义的,因为它无法知道我的视图控制器应该是委托,那么为什么它会呢

apple文档涵盖了协议本身以及如何使用它:

但任务本身的文档没有标识任何委托属性:

这里还有SFSpeechRecognizer文档供参考,该文档包含协议,并按照您的预期标识委托属性:


是否有其他方法可以设置SFSpeechRecognitionTask的代理?还是以完全不同的方式进行处理?

在SFSpeechRecognizer中有一种方法

func recognitionTask(with request: SFSpeechRecognitionRequest, 
        delegate: SFSpeechRecognitionTaskDelegate) -> SFSpeechRecognizerTask

您可以在其中传递SFSpeechRecognizerTask的委托

我是在
ViewController
中这样做的:

recognitionTask = speechRecognizer?.recognitionTask(with: speechRecognitionRequest, delegate: self)

啊,是的,这确实解决了代表的问题,但留给我的另一个问题可能是一个愚蠢的问题。。。我目前正在使用SpeechRecognitionzer上的其他识别任务方法:
func recognitionTask(带有:SFSpeechRecognitionRequest,resultHandler:@escaping(SFSpeechRecognitionResult?,Error?->Void)
,并使用结果处理函数处理语音处理。如果我想使用结果处理程序并定义一个委托,我该怎么办?我一定要吃我的蛋糕,但被迫茫然地盯着它看,而不是吃它?!委托提供了方法
可选的func speechRecognitionTask(u任务:SFSpeechRecognitionTask,didfinishrecognitionresult:SFSpeechRecognitionResult)
,我相信这与处理程序是一样的。啊哈!非常感谢,先生。
recognitionTask = speechRecognizer?.recognitionTask(with: speechRecognitionRequest, delegate: self)