Смешение 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.