2016-05-22 2 views
4

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

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

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

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

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

PS:

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

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

+0

Где вы вставляете эту директиву импорта? –

+0

@ElTomato Мой заголовок класса Objective-c .. также пробовал заголовок зонтика – Fashizel

+0

Пожалуйста, напишите [отчет об ошибке] (http://bugreport.apple.com), это распространенная проблема, и Apple игнорирует Common Crypto в течение многих лет и с Свифтом он только ухудшился. – zaph

ответ

3

Я сам столкнулся с этой проблемой. Как вы его разрешите:

  1. Создайте файл карты модуля (here's my file).
  2. Скопируйте последний заголовок CommonCrypto.h.
  3. Создайте каталог CommonCrypto для обоих этих файлов.
  4. Скопируйте каталог (через drag-and-drop) в свой проект.
  5. Добавьте путь к каталогу под SWIFT_INCLUDE_PATHS для вашей целевой структуры.

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

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

+0

Эй, спасибо! но где я могу найти CommonCrypto.h? спасибо – Fashizel

+0

будет ли это работать на объектно-c-классы? – Fashizel

+0

@Fashizel: Я так не думаю. Моим советом было бы переписать свои криптографические классы в Swift. –

Смежные вопросы