NS_ENUM объект не компилируется после добавления в заголовочный файл моста - PullRequest
0 голосов
/ 25 мая 2018

У меня есть один enum, который находится в файле constant.h (Objective-C)

typedef NS_ENUM (NSInteger, EEFieldType) {
  EEFieldTypeHighFields = 1,
  EEFieldTypeMediumFields = 2,
  EEFieldTypeLowFields = 3
};

У меня есть один файл моста, который подключается к swift-коду и импортирует один файл, имя файла которого является профилем.

(ModuleName-Bridging-Header.h)

#import "Profile.h" 

файл профиля, используя метод ниже, который не скомпилирован в коде.

- (EEFieldType)fieldTypeByPFType;

Ошибка: ожидается тип для EEFieldType.

1 Ответ

0 голосов
/ 28 мая 2018

[Ответ перенесен и расширен из комментариев]

С добавлением дополнительной информации об использовании предварительно скомпилированного заголовочного файла (.pch) в комментарии, ваша проблема приходитвплоть до Swift, не использующего .pch файлы - они являются функцией компилятора Objective-C.

В Objective.c Profile.h компилируется как заголовок, от которого зависит, constant.h, импортируется .pch.

В Swift Profile.h выдает ошибку отсутствующего типа, так как не импортирует constant.h, который определяет тип.

Просто импортирует constant.h в Profile.h.

Примечание: это не только работает для Swift, но и продолжает работать корректно для Objective-C - функция .pch является опцией компилятора для ускорения обработки заголовка, и компилятор Objective-C продолжит ее использовать, когдавидит constant.h импорт в Profile.h, он просто пропустит его, уже импортированный .pch.

...