如何在其他项目中重用Swift代码?

我在Swift写了一个类。 我想在我编写的两个独立的iOS应用程序项目中使用此代码。 共享代码和应用程​​序都是用Swift编写的。 这样做的最好方法是什么?

我试图在Swift中创build一个框架和一个库,然后将其作为一个子项目添加到我的应用程序。 在这两种情况下,我都无法让应用程序看到模块。 我试图将共享模块添加到主应用程序目标的“目标相关性”和“与库链接二进制文件”。 没有运气 – 应用程序仍然无法看到共享模块的类。

目前使用Xcode6 Beta6。

Konstantin Koval和Heliem指出,我所需要的只是在我的类和方法声明中,在共享模块中使用public 。 现在所有的作品,如果我使用工作区,如果我添加模块作为子项目。

更新

我刚刚发现了一个在Swift中重用项目之间代码的简单易用的解决scheme。 它被称为迦太基( https://github.com/Carthage/Carthage )。 这不是一个插件,因为我不以任何方式隶属于它,我只是非常喜欢它。 它适用于iOS 8+。

  1. 为您的可重用代码创build一个新项目(iOS Cocoa Touch Framework)
  2. 将您的类移动到该Framework项目
  3. 标记你的方法和类,这应该是public可见的

  4. 创build工作区。
    您可以在步骤1中创build一个工作区。当您创build新的Framework项目时,Xcode会询问您是否要创build新的工作区并将该项目添加到工作区。 这是最好的方法

  5. 将您的项目和框架添加到工作区
  6. select你的项目目标 – >常规选项卡。 添加框架和库(在这里添加你的库)
  7. 当你想在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中,以下过程适用于我:

  1. 创buildSharedProject 。 项目types必须是Framework而不是Application 。 您在此项目中编写通用代码并将代码标记为public代码。
  2. 在Xcode中打开AppA ,在Finder中打开包含SharedProject的文件夹。 将Finder中的SharedProject的.xcodeproj文件拖放到Xcode Project Navigator中的AppA的根文件夹中。
  3. AppA – > Build Phases – > Link Binary with Libraries 。 添加SharedProject
  4. import SharedProject并从SharedProject重用代码!

编辑:

现在我build议你使用迦太基 。 这比上面的自制解决scheme好。