Ios 在XCode 7中导入具有类别扩展的接口时编译和运行时失败

Ios 在XCode 7中导入具有类别扩展的接口时编译和运行时失败,ios,objective-c,xcode,swift,openears,Ios,Objective C,Xcode,Swift,Openears,我试图获得一个在Swift 2.2(XCode 7.3.1)中运行RapidEars插件的例子。然而,我怀疑我在Swift项目中使用带有扩展的Objective-C接口时遇到了更大的问题(或者我对如何工作的理解) OpenEars代码是Obj-C。然而,我能够通过标准的Obj-C->swift翻译技术在我的swift项目中运行它 下面是缩写代码。完整示例位于分叉Github上,并更新为Swift-2.2: 下面的示例非常有效。您可以通过签出“working-opears-swift2.2”标记查

我试图获得一个在Swift 2.2(XCode 7.3.1)中运行RapidEars插件的例子。然而,我怀疑我在Swift项目中使用带有扩展的Objective-C接口时遇到了更大的问题(或者我对如何工作的理解)

OpenEars代码是Obj-C。然而,我能够通过标准的Obj-C->swift翻译技术在我的swift项目中运行它

下面是缩写代码。完整示例位于分叉Github上,并更新为Swift-2.2:

下面的示例非常有效。您可以通过签出“working-opears-swift2.2”标记查看整个项目

测试桥接头。h:

#import <OpenEars/OELanguageModelGenerator.h>
#import <OpenEars/OEAcousticModel.h>
#import <OpenEars/OEPocketsphinxController.h>
#import <OpenEars/OEAcousticModel.h>
#import <OpenEars/OEEventsObserver.h>
到目前为止,一切都很顺利

但是,为了使用“RapidEars”插件,文档()中说:

  • 将框架添加到项目中,并确保正确包含该框架
  • 导入两个新文件(都是现有OpenEars类的“类别”):

通过从上述github repo中签出
rapidears notworking stackoverflow
标记,可以找到新代码

问题1: 在XCode编辑器中执行完成操作时,编辑器将在
startrealtimelistingwithlanguagemodelatpath
方法上执行自动完成,但是当代码运行时,它总是失败,并出现以下错误:

[OEPocketsphinxController startRealtimeListeningWithLanguageModelAtPath:dictionaryAtPath:acousticModelAtPath:]: unrecognized selector sent to instance 0x7fa27a7310e0
问题2: 在XCode编辑器中执行自动完成时,它不会看到在
rapideardemo/OEPocketsphinxController+RapidEars.h
中定义的两个新委托方法

我有一种感觉,这些都是相关的,也与它们被定义为Objective-C类的类别这一事实有关。但这只是一个猜测

我已确保RapidEars框架已导入并位于框架搜索路径中


谁能告诉我为什么会这样?或者如果我错过了一些快速的魔法咒语

问题可能是下面的链接中描述的问题,静态库中的category方法会产生
选择器无法识别
运行时错误


您是否将
.m
文件链接到您的目标?或者可能是这样的:这是一个付费框架,所以没有.m文件。第二个链接使它得以编译。Xcode编辑器仍然没有对rapidEars委托方法进行自动完成,但至少它可以工作@paulvs把你的评论作为回答,我会接受的。谢谢耶珀。这修复了它(运行时异常部分)。谢谢
#import <RapidEarsDemo/OEEventsObserver+RapidEars.h>
#import <RapidEarsDemo/OEPocketsphinxController+RapidEars.h>
func rapidEarsDidReceiveLiveSpeechHypothesis(hypothesis: String!, recognitionScore: String!)    
func rapidEarsDidReceiveFinishedSpeechHypothesis(hypothesis: String!, recognitionScore: String!)
[OEPocketsphinxController startRealtimeListeningWithLanguageModelAtPath:dictionaryAtPath:acousticModelAtPath:]: unrecognized selector sent to instance 0x7fa27a7310e0