2017-02-16 13 views
2

Это настройка, которую мы имеем. У нас есть Pod i.e динамическая структура с Objective C и Swift Classes, которая отлично работает в большинстве случаев, но в последнее время у нас был «SwiftClass», реализующий «ObjcProtocol». И мы должны использовать этот «SwiftClass» в коде Objective C. Поэтому, когда «MixAndMatchFramework-Swift.h» сгенерирован, он имеет определение «SwiftClass», но у него нет определения «ObjcProtocol», поскольку он не может быть переопределен в «MixAndMatchFramework-Swift.h», который будет дублирующее определение. Теперь, что пытается сделать, это включить заголовок, но заголовок не существует, как «<« MixAndMatchFramework/MixAndMatchFramework.h »>». Теперь я попытался вручную добавить заголовок с тем же именем и включить импорт заголовка в определение «ObjcProtocol», но затем он дает еще 20 ошибок. Хотя содержание этого протокола требует только UIKit и Foundation.Смешивание и сопоставление в динамической структуре Objective C и Swift с классом Swift, реализующим Objective Protocol, но не могу найти определения

И теперь эти 20 или около того заголовков отчетов об ошибках, которые не найдены и т. Д., Очень похожи на ошибки, которые мы получили, когда мы изначально начали смешивать и сопоставлять, и, похоже, связаны с автогенератором заголовка зонтика CocoaPods. Мы исправили эту конкретную проблему, указав настраиваемую карту модулей в xcconfig с явным путем к нашему ручному добавленному заголовку зонтика (который имел только импорт классов Objective C, используемых в Swift), и это устранило проблему. Но ошибки снова всплыли с вышеупомянутым сценарием

Мы используем Xcode 8.2.1 с последним Swift 3.X с Cocoapads 1.1 Любых берущим .....

ответ

0

Установка Use Header Maps в Yes фиксированном этот вопрос для меня.

Когда я столкнулся с этим вопросом в прошлом году, я сделал пример приложения, чтобы попытаться воспроизвести проблему, чтобы я мог подать радарную ошибку с Apple. При этом я решил, что включение настроек Use Header Maps в настройках сборки является ключом к тому, работает ли это правильно или нет.

Я никогда не подавал ошибку с Apple, так как она казалась краевой кейс (и это значение равно Yes по умолчанию в недавно созданных проектах ... оно было выключено, поскольку оно было старой базой кода).

Обновление: У меня также возникли проблемы, когда Header Search Paths были неправильными или когда ссылки на файлы для заголовков в Build Phases были перепутаны.