如何在其他项目中重用Swift代码?
我在Swift写了一个类。 我想在我编写的两个独立的iOS应用程序项目中使用此代码。 共享代码和应用程序都是用Swift编写的。 这样做的最好方法是什么?
我试图在Swift中创build一个框架和一个库,然后将其作为一个子项目添加到我的应用程序。 在这两种情况下,我都无法让应用程序看到模块。 我试图将共享模块添加到主应用程序目标的“目标相关性”和“与库链接二进制文件”。 没有运气 – 应用程序仍然无法看到共享模块的类。
目前使用Xcode6 Beta6。
解
Konstantin Koval和Heliem指出,我所需要的只是在我的类和方法声明中,在共享模块中使用public
。 现在所有的作品,如果我使用工作区,如果我添加模块作为子项目。
更新
我刚刚发现了一个在Swift中重用项目之间代码的简单易用的解决scheme。 它被称为迦太基( https://github.com/Carthage/Carthage )。 这不是一个插件,因为我不以任何方式隶属于它,我只是非常喜欢它。 它适用于iOS 8+。
- 为您的可重用代码创build一个新项目(iOS Cocoa Touch Framework)
- 将您的类移动到该Framework项目
-
标记你的方法和类,这应该是
public
可见的 -
创build工作区。
您可以在步骤1中创build一个工作区。当您创build新的Framework项目时,Xcode会询问您是否要创build新的工作区并将该项目添加到工作区。 这是最好的方法 - 将您的项目和框架添加到工作区
- select你的项目目标 – >常规选项卡。 添加框架和库(在这里添加你的库)
- 当你想在swift文件中使用你的库中的代码时,导入它
import 'LibTargetName'
您可以使用SWM (Swift模块)采取更多的编程方法: https : //github.com/jankuca/swm
它与npm (node.js包pipe理器)或bower (客户端模块pipe理器)非常相似; 你在下面的swiftmodule.json
文件中声明你的依赖关系。 它没有像两个提到的JS解决scheme一样的中央模块registry,它只接受git的URL。
{ "name": "ProjectName", "dependencies": { "Dependency": "git://github.com/…/….git" } }
…运行swm install
并准备好在.modules/
目录中导入Dependency
模块(编译为*.swiftmodule
二进制文件)。
import Dependency
如果您更愿意跳过Xcode进行应用程序开发,您也可以使用swm build
构build您的整个应用程序(项目自述文件中的更多信息)。
这个项目还处于初期阶段,但至less对我来说这个项目有很大的帮助。 它提供了创build可导入模块的最干净(清晰)的方法。
这是一个非常简单的video: http : //eonil-observatory.tumblr.com/post/117205738262/a-proper-way-to-add-a-subproject-to-another-xcode
该video是针对OS X而不是iOS的。 但你会得到它,并找出iOS的过程。
假设AppA
需要从SharedProject
重用代码。
在Xcode 7 Beta中,以下过程适用于我:
- 创build
SharedProject
。 项目types必须是Framework
而不是Application
。 您在此项目中编写通用代码并将代码标记为public
代码。 - 在Xcode中打开
AppA
,在Finder中打开包含SharedProject
的文件夹。 将Finder中的SharedProject
的.xcodeproj文件拖放到Xcode Project Navigator中的AppA
的根文件夹中。 -
AppA
– >Build Phases
– >Link Binary with Libraries
。 添加SharedProject
。 -
import SharedProject
并从SharedProject
重用代码!
编辑:
现在我build议你使用迦太基 。 这比上面的自制解决scheme好。