2016-03-03 5 views
3

Это мое первое приложение IOS, и все прошло хорошо. Мой код в Swift и мне нужно использовать библиотеку Gold Енот FTP, который находится в Obj-C, в моем приложении: https://github.com/albertodebortoli/GoldRaccoonНевозможно получить доступ к объектно-c-методу из swift. Установка моста и экземпляр класса obj-c

Я импортировал файлы Gold енот и создал bridge header. Основным классом, с которым вы работаете, является GRRequestsManager, который я могу успешно создать в рабочем приложении. Однако я не могу получить доступ к методу addRequestForUploadFileAtLocalPath в этом классе.

Вначале у меня был только оператор GRRequestsManager.h import в файле моста. Так как это наследует GRRequestsManagerProtocol.h, у которого есть фактический метод, который я пытаюсь использовать в нем (addRequestForUploadFileAtLocalPath), я решил добавить это к моему файлу заголовка моста, и вот вдруг неожиданно появилось автоматическое предложение для метода, и я мог поместите его в мой код без ошибок. Через несколько минут я снова получил сообщение об ошибке, и теперь это не сработает, несмотря ни на что. Я попытался закрыть и снова открыть Xcode и очистить/перестроить безрезультатно.

Ниже приведено комбинированное изображение (может быть опубликовано только одно изображение из-за моих очков), отображающее сначала bridging-header и второе (разделенное красной линией) сообщение об ошибке в коде, где я пытаюсь вызвать метод. Вы можете видеть, что он признал класс просто прекрасным.

Screenshots

+0

Добавьте к вашему вопросу объявление 'addRequestForUploadFileAtLocalPath'. –

+0

Это его объявление в файле GRRequestsManagerProtocol.h: http://imgur.com/3XKOlhV, и это его реализация в файле GRRequestsManager.m: http://imgur.com/djpACLw – DannyP

ответ

2

Ну, я пошел вперед и добавил включать в каждый файл заголовок в библиотеке Gold енот моего мостикового заголовок и теперь этот метод признан и мой код компилируется! Я все еще не слишком уверен, зачем мне это нужно, но это было трюк. Если кто-то хочет объяснить, почему я хотел бы это понять.

+0

Когда вы программируете в Objective -C, вы '# импортируете' в файл' .m' вашего приложения, какие бы заголовки вам ни нужны, так что шаблон в Swift одинаковый, вам нужно явно «импортировать» те же самые файлы .h' в заголовок моста. Включаете ли вы _all_ файлы заголовков или только ключевые, это функция того, как был разработан Gold Racoon, но в их документации должно быть ясно, что вам нужно импортировать. – Rob

+0

Спасибо, Роб. Согласно документации для Gold Raccoon и даже в демонстрационном приложении obj-C для этого вам просто нужно включить GRRequestsManager.h (и включить структуру CFNetwork). Прошло более десяти лет с тех пор, как я серьезно написал C и C++, но это было мое воспоминание. Я думаю, что могут быть некоторые проблемы в том, как все решается с файлом моста в игре, тем более, что он работал мгновенно без меня, добавляя ссылки на все. – DannyP