Смешение Swift и Objective C: Файл ProjectName-Swift.h не найден
Итак, я работаю над проектом iOS, который содержит классы Swift и Objective-C.
Чтобы создать экземпляр объекта, описанного в Objective-C, я понял, что мне нужно иметь файл Bridging-Header, содержащий все импортированные заголовки, которые мне придется использовать на моих классах Swift. И он отлично работает на моем проекте.
Я создал все классы, в которых я нуждался, я подклассифицировал классы Objective-C в Swift, все в порядке.
Моя проблема заключается в том, чтобы сделать обратное: создать экземпляр быстрого объекта в файле Objective-C. Поэтому я прочитал, что мне нужно иметь эти параметры:
- Определить модули как Да
- добавьте строку
#import "<#YourProjectName#>-Swift.h"
в файл *.m, над которым я работаю.
И вот что я сделал:
Я изменил все значения в настройках сборки, которые необходимо было изменить. Я добавил строку import
, даже попытался создать файл заголовка, но у меня все еще есть ошибка "<#YourProjectName#>-Swift.h" file not found
.
Конечно, я заменил имя YourProjectName на фактическое имя модуля, которое я нашел в разделе Product Name Name в разделе Packaging on Build Settings. Кроме того, в названии проекта нет пробелов.
Я забыл о шаге?
Благодарим вас за помощь.
Ответы
Ответ 1
Убедитесь, что вы импортируете файл -Swift.h
из файла .m Objective-C, а не в файл заголовка .h. docs говорят только об импорте из .m:
... импортировать заголовочный файл сгенерированный Xcode для вашего кода Swift в любой файл Objective-C.m, с которого вы хотите использовать свой код Swift.
Файл -Swift.h
создается во время сборки, и я обнаружил, что импорт его из файла .h всегда терпит неудачу, даже когда я знаю, что файл существует. Поскольку он сгенерирован сборкой, я предполагаю, что он очищается, когда компилятор просеивает заголовки и восстанавливается после скомпилирования файлов .swift.