将现有的objective-c静态库转换为swift

Posted

技术标签:

【中文标题】将现有的objective-c静态库转换为swift【英文标题】:Convert an existing objective-c static library to swift 【发布时间】:2016-07-03 20:27:18 【问题描述】:

我正在尝试将现有的 Objective-c 静态库转换为 swift。我的目标是一次将几个文件从 Objective-c 更新到 swift,所以几周后我的项目将由 Objective-c 文件和 swift 文件组成。

我创建了一个新的 swift 文件并删除了它的objective-c 对应部分。当 xcode 询问时,我还创建了一个桥接头。

构建时出现以下错误:

'静态库不支持 Swift'

我环顾了一下,似乎我需要创建一个框架。我找到了许多关于如何创建新框架的示例,但没有找到关于如何将旧静态库项目转换为框架的示例。这是可能的还是我需要从头开始一个新项目?

提前致谢。

【问题讨论】:

【参考方案1】: 在您现有的静态链接库项目中添加一个新的 cocoa touch 框架作为 TARGET。 在构建阶段,将所有 .m、.mm、.c、.cpp、.metal 等添加到静态链接框架目标的“\Build Phases\Compile Sources”阶段。 将要公开的标头放入“\Build Phases\Headers”。 记得在你的 Build Settings 中检查 Mach-O Type 设置,它应该是“Static Library”。 然后,想要使用此框架的应用只需将标头包含为 #import 并将框架添加到您的 App Target 的“Build Phases\Link Binary With Libraries”中。

这是来自raywenderlich.com的教程

本教程构建了一个静态库,然后将其转换为 ios 框架,因此您可以尝试后半部分。

【讨论】:

当我完成所有这些并构建时,我得到“静态库不支持 Swift” 还尝试创建一个全新的框架项目,看看我是否可以让事情正常进行并与我现有的项目进行比较。一切都很好,直到我添加第一个 swift 文件并且我得到“静态库不支持 Swift”。不知道为什么我在创建一个全新的框架而不是静态库时会得到它。我错过了什么?

以上是关于将现有的objective-c静态库转换为swift的主要内容,如果未能解决你的问题,请参考以下文章

如何将现有的非空目录转换为 Git 工作目录并将文件推送到远程存储库

将现有的数据库模式转换为星型模式

如何将现有的回调 API 转换为 Promise?

如何将现有的回调 API 转换为 Promise?

如何将现有的回调 API 转换为 Promise?

如何将现有的回调 API 转换为 Promise?