Каркасные классы 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,

Другие вопросы по тегам