我目前正在尝试将objective-c代码转换为openEars提供的示例应用程序的swift。但是有一行代码:
[[OEPocketsphinxController sharedInstance] setActive:TRUE error:nil];
这怎么写得很快?
在框架中定义如下:
+ (OEPocketsphinxController *)sharedInstance;
/**This needs to be called with the value TRUE before setting properties of OEPocketsphinxController for the first time in a session, and again before using OEPocketsphinxController in case it has been called with the value FALSE.*/
- (BOOL)setActive:(BOOL)active error:(NSError **)outError;
但是我确实尝试过这样的事情:
OEPocketsphinxController(TRUE, error: nil)
编译错误是:
Swift编译器错误预期声明
答案 0 :(得分:4)
你调用过的Swift代码在Objective-C中看起来像这样:
[[OEPocketsphinxController alloc] initWith:YES error:nil]
排序......
您正在尝试调用不存在的构造函数。相反,我们必须通过sharedInstance
:
OEPocketsphinxController.sharedInstance().setActive(true, error: nil)
sharedInstance()
是OEPocketsphinxController
类的类方法,它返回OEPocketsphinxController
的实例。
setActive(:error:)
是OEPocketsphinxController
类的实例方法,必须在此类的实例上调用。
因此,我们希望使用sharedInstance()
来获取要在其上调用setActive(:error:)
方法的实例。
以下两段代码完全等效:
OEPocketsphinxController.sharedInstance().setActive(true, error: nil)
[[OEPocketsphinxController sharedInstance] setActive:TRUE error:nil];