我在Swift写了一个类。我想在我写的两个独立的iOS应用程序项目中使用此代码。共享代码和应用程序都是用Swift编写的。这样做的最佳方式是什么?
我尝试在Swift中创建框架和库,然后将其作为子项目添加到我的应用程序中。在这两种情况下,我无法让应用程序看到模块。我试图将共享模块添加到" Target Dependencies"和#34;链接二进制文件库和#34;主应用程序的目标。没有运气 - 应用程序仍然无法看到共享模块的类。
目前使用Xcode6 Beta6。
正如Konstantin Koval和Heliem指出的那样,我所需要的只是在共享模块中的类和方法声明中使用public
。现在一切正常,如果我使用工作区,并且我将模块添加为子项目。
我刚刚找到了一个很好的简单解决方案,可以在Swift中重用项目之间的代码。它被称为迦太基(https://github.com/Carthage/Carthage)。这不是插件,因为我不以任何方式与它有任何联系,我真的很喜欢它。它适用于iOS 8 +。
答案 0 :(得分:28)
public
import 'LibTargetName'
答案 1 :(得分:3)
您可以使用 SWM (Swift模块)采用更加编程的方法:https://github.com/jankuca/swm
它与 npm (node.js包管理器)或 bower (客户端模块管理器)非常相似;您在swiftmodule.json
文件中声明您的依赖项,如下所示。它没有像两个提到的JS解决方案那样的中央模块注册表,它只接受git URL。
{
"name": "ProjectName",
"dependencies": {
"Dependency": "git://github.com/…/….git"
}
}
...运行swm install
并将Dependency
模块(编译成*.swiftmodule
二进制文件)准备好在.modules/
目录中导入。
import Dependency
如果您希望跳过Xcode进行应用开发,您还可以使用swm build
构建整个应用(项目自述文件中的详细信息)。
该项目仍处于早期阶段,但它至少对我有用。它提供了创建可导入模块的最干净(最清晰)的方法。
答案 2 :(得分:2)
以下是一段非常简单的视频:http://eonil-observatory.tumblr.com/post/117205738262/a-proper-way-to-add-a-subproject-to-another-xcode
该视频适用于OS X而非iOS。但是你会得到它并找出iOS的过程。
我们假设AppA
需要重用SharedProject
中的代码。
以下过程适用于Xcode 7 Beta:
SharedProject
。项目类型必须为Framework
,而不是Application
。您在此项目中编写公共代码,并将代码标记为public
。AppA
,在Finder中打开包含SharedProject
的文件夹。从Finder中拖动SharedProject
的.xcodeproj文件,并将其放入Xcode Project Navigator中AppA
的根文件夹中。AppA
- > Build Phases
- > Link Binary with Libraries
。添加SharedProject
。import SharedProject
并重复使用SharedProject
!修改强>
现在我建议您使用Carthage。它比上面的自制解决方案更好。