Xcode Swift:如何导入Swift项目

时间:2016-11-01 09:57:22

标签: ios swift xcode

我制作了一个Xcode Swift项目(" Project1")。在一个新项目(" Project2")中,我无法添加项目1.

我尝试将项目1添加到项目2的构建阶段(目标依赖项,编译源,链接二进制文件库);没有工作。添加到已编译的源时,无论我选择哪个选项(文件夹引用,组,如果需要,都可以复制),它都无法工作。

我的编译错误没有:

import Project1

但是当我尝试使用项目1中的一个类时,我得到错误"使用未声明的类型"。

我也试过跟踪链接但没有成功:

这两个项目都在Swift(iOS)中。

如果有人帮我解决了这个问题,我将非常感激。

更新:项目1不是框架 - 它是一款iOS应用。我需要在项目2中使用它的一些类。问题是项目1通过桥接头使用Objective C库Common Crypto。当我手动将项目1类添加到项目2中时,我在使用Common Crypto的项目1 Swift代码中收到错误("未解析的标识符")。

简而言之:我有一个iOS应用程序(项目1),它位于Swift中,但通过桥接头使用Common Crypto。当我将项目1中的许多类添加到项目2中时,它无法将引用(在项目1中)解析为Common Crypto变量。

2 个答案:

答案 0 :(得分:0)

编辑:由于您将CommonCrypto作为依赖项,因此您必须将module添加到Project2项目中,以解决您的问题(这是最简单的,无需借助伞形框架)。添加run script build phase并添加http://pastebin.com/1vmiqffu

- 致谢:脚本'被盗'来自:https://github.com/henrinormak/Heimdall

好的,所以我假设Project1实际上有一个框架作为目标。 您尝试使用的类型设置的访问权限是什么?

以下是我遇到过Swift和框架时的几个catchya:

  • 您没有桥接标头,而是您的框架在框架的头文件(ModuleName.h)中包含非Swift依赖项的标头。这也意味着这些将可用于您导入它们的任何项目。据我所知,您需要使用module.modulemap才能使用私有标头和包含。
  • 默认情况下,所有Swift类/结构/定义通常都是内部的。这是一个非常好的设计选择,它会强制您考虑您编写的每个组件的访问权限。默认情况下保持私有使得更容易只打开真正需要打开的东西(公共,开放),从而允许更容易的代码维护,因为您知道私有事物只能在同一个上下文中访问。 (否则:错误)

如需更多帮助,此链接可能对您如何做一些基础知识有所帮助:

your first ios framewok (swift)

答案 1 :(得分:0)

假设Project1是框架,Project2是使用框架的应用程序:

  • 创建名为Workspace
  • 的处女TestWorkspace(Xcode文件 - > new - >工作区)
  • Finder,将Project1.xcodeproj文件拖至TestWorkspace
  • Finder,将Project2.xcodeproj文件拖至TestWorkspace上方Project1

修改TestWorkspace架构Build设置:

  • 添加Project1Project2
  • 确保Project1高于Project2
  • Untick" Paralellize Build"确保Project1首先构建
  • 构建
  • 选择Project2 s target - >一般
  • 将人工制品project1.framework(在Products组中)拖至"链接的Framworks和图书馆"

注意:要使客户端可见,project1.framework中的所有类和方法都必须是publicopen。查找详细信息in Apples documentation