import swift class в объекте-c, <myModule> -Swift.h файл не найден

У меня есть проект iOS, написанный с Objective-C. Я создал класс Swift в проекте, файл заголовка моста для доступа к объектив-c в Swift сгенерирован успешно, и он отлично работает.

Моя проблема - наоборот. Я хочу импортировать класс Swift в объектный код.

В xcode, target -> Build Settings -> Swift Compiler раздел, я вижу Objective-C Generated Interface Header Nameполе со значением myModule-Swift.h, но когда я импортирую этот заголовок в свой класс object -c :

#import "myModule-Swift.h"

Я получаю ошибку компилятора:

myModule-Swift.h file not found

и в проекте я тоже не могу найти этот файл. Как я могу решить эту проблему?

Моя версия xcode - 6,4

ios,objective-c,xcode,swift,

29

Ответов: 7


60 ов принято

Обновлен май 2018 г. Xcode 9.3


  1. Build Settings-> Objective-C Generated Interface Header Name
    и установите значение для #import «YourModule-Swift.h» (обычно это уже установлено, это имя файла, которое необходимо импортировать в файл .mCData

(Пример, название проекта NSObject)

пример

  1. То же, что и в шаге 1, перейдите к настройкам сборки и найдите «Определяет модуль», установите для обоих значений значение ДА

  2. Создайте класс, который продолжается .swiftв YourModule-Swift.hфайле

пример

  1. Снова создайте проект

  2. Импортируйте YourModule-Swift.hфайл в файл .m (обратите внимание, что он чувствителен к регистру Mymodule,! == MyModule)

введите описание изображения здесь


9

OMG .. фактический оператор импорта не был «class-Swift.h», а скорее «projectname-Swift.h»

Вы можете найти имя файла, если вы смотрите в настройках сборки -> Генерация кода Sweeper компилятора -> Название заголовка связанного интерфейса Objective-C

Файл не был сгенерирован, когда я перетащил источник Swift в графический интерфейс. Только когда я щелкнул правой кнопкой мыши-> Добавить файл в «проект». Затем он попросил сгенерировать файлы заголовков.


3

Мое дополнение к Даниэлю Кромсу отвечает:

  • Никогда не добавляйте заголовок -Swift.h в заголовок. Даже если это сработает. Добавьте только импорт в .m-файл!

  • Если вы используете в своих быстрых классах заголовка, сделайте декларацию с именем @class swiftclassname перед вашим @interface

Затем вы увидите свои реальные ошибки в своем коде.


2

Для меня проблема заключалась в том, что у меня был биткод. Когда я нажал кнопку «Обновить до рекомендуемых параметров проекта», он изменил несколько настроек, которые, вероятно, были виновниками. Я включил «Включенный биткод» в «Нет» в настройках сборки, и теперь он исправлен.

введите описание изображения здесь


2

В случае, если кто-нибудь задается вопросом, почему, потратив часы на этот вопрос, он все еще не решен, вы можете оказаться в ситуации, подобной моей, где я фактически разрабатывал структуру , а не приложение.

В этом случае формат оператора импорта для заголовка расширенного интерфейса Objective-C выглядит следующим образом:


#import <ModuleName/ModuleName-Swift.h>
ИОС, Objective-C, Xcode, быстрый,
Похожие вопросы
Яндекс.Метрика