我制作了一个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变量。
答案 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
类/结构/定义通常都是内部的。这是一个非常好的设计选择,它会强制您考虑您编写的每个组件的访问权限。默认情况下保持私有使得更容易只打开真正需要打开的东西(公共,开放),从而允许更容易的代码维护,因为您知道私有事物只能在同一个上下文中访问。 (否则:错误)如需更多帮助,此链接可能对您如何做一些基础知识有所帮助:
答案 1 :(得分:0)
假设Project1
是框架,Project2
是使用框架的应用程序:
Workspace
TestWorkspace
(Xcode文件 - > new - >工作区)
Finder
,将Project1.xcodeproj
文件拖至TestWorkspace
Finder
,将Project2.xcodeproj
文件拖至TestWorkspace
上方Project1
修改TestWorkspace
架构Build
设置:
Project1
和Project2
Project1
高于Project2
Project1
首先构建
Project2
s target - >一般project1.framework
(在Products
组中)拖至"链接的Framworks和图书馆"
注意:要使客户端可见,project1.framework中的所有类和方法都必须是public
或open
。查找详细信息in Apples documentation。