无法在混合语言框架中导入CommonCrypto

时间:2016-05-22 07:59:10

标签: ios xcode swift ios9 ios-frameworks

我正在构建一个混合语言框架。我主要有Swift文件和一些Objective-C文件。

其中一个Objective-C文件是使用CommonCrypto的加密类。

似乎我出于某种原因无法导入它,即使我可以在Objective-C框架中导入它。

有人能解释一下为什么会这样吗?

当我需要在Swift框架中的Objective-C中使用它时,我发现的所有其他解决方案都讨论了如何在Swift中使用CommonCrypto。

P.S:

  1. 我尝试在伞头文件中添加导入,如下所示: #import <CommonCrypto/CommonCrypto.h> 错误:Include of non-modular header inside framework module 'name of header'

  2. 此答案无法解决问题:answer

1 个答案:

答案 0 :(得分:3)

我自己也遇到过这个问题。以下是解决问题的方法:

  1. 创建模块映射文件(here's my file)。
  2. 复制最新的null标题。
  3. 为这两个文件创建目录object CustomProtocol { val gen0 = cachedImplicit[LabelledGeneric[Color]] implicit val colorLabel: LabelledGeneric.Aux[Color, gen0.Repr] = gen0 }
  4. 将目录(通过拖放)复制到项目中。
  5. 为目标框架添加 SWIFT_INCLUDE_PATHS 下的目录路径。
  6. 这应该允许您在任何地方使用CommonCrypto.h用于Swift ,而非Objective-C)。

    编辑:似乎我最初误读了这个问题。您想在Objective-C中使用CommonCrypto,然后使用Swift中的CommonCrypto。这里有一些建议:不要在公共标题中CommonCrypto CommonCrypto,而是在内部。包装所有的加密结构,以便CommonCrypto没有任何公共依赖,然后通过默认的桥接过程从Swift中使用它。