Преобразование в быстрый из объектива-с

В настоящее время я пытаюсь преобразовать код target-c в swift из примера приложения, предоставленного openEars. Однако есть одна строка кода:

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

Как это написано на swift?

Это было определено так в рамках:

+ (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 ответ

Решение

Вызванный вами код 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:) метод на.

Следующие два фрагмента кода в точности эквивалентны:

Swift:

OEPocketsphinxController.sharedInstance().setActive(true, error: nil)

Objective-C:

[[OEPocketsphinxController sharedInstance] setActive:TRUE error:nil];
Другие вопросы по тегам