Каркасные классы Objective-C не видны за пределами Swift AppDelegate
Я пытаюсь интегрировать oovoosdk в новый проект Swift. Oovoosdk - это фреймворк, написанный на Objective-C. Я создал соединительный заголовок, и это, кажется, работает, потому что я могу вызвать это в AppDelegate и получить результат (ooVooController - это интерфейс, который является частью фреймворка):
let result = ooVooController.sharedController().initSdk(kDefaultAppId, applicationToken: kDefaultAppToken, baseUrl: "https://api-sdk.dev.oovoo.com")
Проблема в том, что когда я копирую тот же самый бит кода за пределы AppDelegate, проект не будет компилироваться. Я получаю предупреждение "Использование неразрешенного идентификатора ooVooController". Насколько я понимаю, классы, импортированные с использованием соединительного заголовка, стали глобально доступными, но, похоже, есть какая-то проблема с видимостью?
Для записи, я не хочу дважды initSdk, это всего лишь пример.
Изменить: следующий код страдает от той же проблемы "Использование неразрешенного идентификатора ooVooVideoView":
let myCompletelyUniqueViewName = ooVooVideoView(frame: self.view.frame)
Полный код работает нормально. Я попытался добавить тип класса явно:
let myCompletelyUniqueViewName:ooVooVideoView = ooVooVideoView(frame: self.view.frame)
и получил "Использование необъявленного типа ooVooVideoView".
2 ответа
В конце концов мне удалось решить проблему. У затронутого контроллера представления было целевое членство (найденное в File Inspector) для моего набора тестов, у которого не был настроен соединительный заголовок. После удаления этого членства мой проект скомпилирован и запущен.
ooVooController
выглядит как переменная, которую вы определили ранее. Поиск в AppDelegate
класс для чего-то вроде let ooVooController = ...
,
Вы получаете ошибку не потому, что сам класс или фреймворк не видны, но компилятор не знает переменную ooVooController
,