从objective-c

时间:2015-06-28 13:59:44

标签: swift openears

我目前正在尝试将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编译器错误预期声明

1 个答案:

答案 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)

目标C:

[[OEPocketsphinxController sharedInstance] setActive:TRUE error:nil];