Преобразование в быстрый из объектива-с
В настоящее время я пытаюсь преобразовать код 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];