【问题标题】:How is CommonCrypto used in SWIFT3?SWIFT3 中如何使用 CommonCrypto?
【发布时间】:2018-11-30 13:14:36
【问题描述】:

指导是在桥接头中使用#import "CommonCrypto/CommonCrypto.h"。这是来自以下问题:SHA256 in swift
但是,当我使用 Andi 和 Graham 给出的答案时,Xcode 仍然抱怨“使用未解析的标识符 CC_SHA256_DIGEST_LENGTH ...”

我认为我犯了两个错误之一:要么 (a) 我在没有连接标题和正确导入时遗漏了一些东西。即我没有正确设置桥接头。我喜欢关于如何包含库和正确创建桥接头的明确步骤。或者 (b) 默认情况下不包含该库,我实际上需要下载并存储在本地才能使用它。我很想得到这方面的说明。

谢谢。

【问题讨论】:

标签: swift commoncrypto


【解决方案1】:

好消息!:Swift 4(Xcode 10) 已使 CommonCrypto 默认可用于导入!

这可能对您在 Swift 3 中没有帮助,但仍然仅供参考

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 谢谢@pudaykiran 我已经改了
【解决方案2】:

8 个步骤的更好方法

1) ------------------------------------------- H3>

转到 xcode 文件检查器并选择您的项目文件并添加一个新目标。

2) ------------------------------------------- H3>

从跨平台部分中选择一个聚合。

3) ------------------------------------------- H3>

正确命名后,从目标中选择它并转到构建阶段部分。

4) ------------------------------------------- H3>

选择加号按钮并使用以下代码创建新的运行脚本阶段。它将在构建之前为每个平台生成适当的模块,您甚至可以为模拟器导入 CommonCrypto。

mkdir -p "${SRCROOT}/Frameworks/CommonCrypto"
cat <<EOF > "${SRCROOT}/Frameworks/CommonCrypto/module.modulemap"
module CommonCrypto [system] {
    header "${SDKROOT}/usr/include/CommonCrypto/CommonCrypto.h"
    export *
}
EOF

5) ------------------------------------------- H3>

在此步骤之后转到您的项目目标并将此聚合实际链接到您的构建过程

6) ------------------------------------------- H3>

选择聚合

7) ------------------------------------------- H3>

现在仍在项目目标中,转到 build settings 并找到“header search paths”并插入此路径以遍历新生成的模块

${SRCROOT}/Frameworks/CommonCrypto

8) ------------------------------------------- H3>

现在你需要做的只是

import CommonCrypto

某处并开始使用它。

希望对你有帮助

【讨论】:

  • 谢谢@ha100。抱歉回复晚了……刚回到项目。我没有看到类似“构建设置中的 Objective-C 桥接头部分”之类的内容。我确实使用您指定的命名约定添加了桥接头文件。我正在使用 Xcode 8.3。版本之间有区别吗?
  • 我在 Swift 4 中寻找一个可行的解决方案。我到处寻找,但没有成功使用这个解决方案。有什么想法吗?
  • @ha100 我被困在第 7 步。我在项目目标中找不到“标题搜索路径”。有什么线索吗?
猜你喜欢
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
相关资源
最近更新 更多