Не удается импортировать CommonCrypto в смешанной языковой среде

Я создаю смешанную языковую среду. В основном у меня есть файлы Swift и несколько файлов Objective-C.

Один из файлов Objective-C — это криптографический класс, использующий CommonCrypto.

Кажется, я не могу импортировать его по какой-то причине, хотя я могу импортировать его в рамках Objective-C.

Может кто-нибудь объяснить мне, почему это так?

Все другие решения, которые я нашел, говорят о том, как использовать CommonCrypto в Swift, когда мне нужно использовать его в Objective-C в среде Swift.

P.S:

  1. Я попытался добавить импорт в файл заголовка зонтика следующим образом: #import <CommonCrypto/CommonCrypto.h> ошибка: Include of non-modular header inside framework module 'name of header'

  2. Этот ответ не решил проблему: ответ


person Fashizel    schedule 22.05.2016    source источник
comment
Куда вы вставляете эту директиву импорта?   -  person El Tomato    schedule 22.05.2016
comment
@ElTomato Заголовок класса My Objective-c .. также пробовал заголовок зонтика   -  person Fashizel    schedule 22.05.2016
comment
Пожалуйста, отправьте отчет об ошибке, это распространенная проблема, и Apple годами игнорировала Common Crypto, и только стало хуже со Swift.   -  person zaph    schedule 22.05.2016


Ответы (1)


Сам столкнулся с этой проблемой. Вот как вы решаете это:

  1. Создайте файл карты модуля (вот мой файл).
  2. Скопируйте последний заголовок CommonCrypto.h.
  3. Создайте каталог CommonCrypto для обоих этих файлов.
  4. Скопируйте каталог (с помощью перетаскивания) в свой проект.
  5. Добавьте путь к каталогу в разделе SWIFT_INCLUDE_PATHS для вашей целевой платформы.

Это должно позволить вам использовать import CommonCrypto где угодно (для Swift, а не для Objective-C).

Редактировать: кажется, я изначально неправильно понял вопрос. Вы хотите использовать CommonCrypto в Objective-C, а затем использовать его в Swift. Вот несколько советов: не #import CommonCrypto в публичных заголовках, а только внутри. Оберните все свои криптоструктуры, чтобы не было публичной зависимости от CommonCrypto, а затем просто используйте его из Swift с помощью процедуры моста по умолчанию.

person Vatsal Manot    schedule 22.05.2016
comment
Эй, спасибо! но где мне найти CommonCrypto.h? Благодарность - person Fashizel; 22.05.2016
comment
@Fashizel: я так не думаю. Я бы посоветовал переписать свои криптографические классы на Swift. - person Vatsal Manot; 22.05.2016
comment
Привет! можно поподробней о 5 этапе? Где я могу найти эту опцию? благодаря. - person Fashizel; 22.05.2016
comment
Перейдите в Xcode, нажмите на цель (на боковой панели), нажмите Настройки сборки и введите SWIFT_INCLUDE_PATHS в строке поиска. - person Vatsal Manot; 22.05.2016
comment
Давайте продолжим обсуждение в чате. - person Fashizel; 22.05.2016