43

我在项目的一个单独的 Swift 文件中创建了最简单的自定义类:

class Foo
{
    init()
    {
        println("I made a foo.")
    }
}

然后,在同一个项目的操场上,我尝试了

var x = Foo()

Xcode 似乎不喜欢这样,并告诉我 'Foo' 是一个未解析的标识符。我对游乐场如何融入项目结构的其余部分感到有些困惑,因为我项目中的任何其他 Swift 文件都可以毫无问题地解析“Foo”。

如何让我的 Playground 能够使用我在项目的其他 Swift 文件中定义的自定义类?我尝试为构建目标命名产品模块并将其导入操场,但没有成功:操场无法识别产品模块的名称。

提前感谢您的帮助。我知道这很简单。

4

4 回答 4

31

有两种方法可以在 Playground 中使用您的项目代码

Playground 的源文件夹

是的,在 Xcode 6.3 Beta 3 中(希望在未来):

Playgrounds 现在在 Xcode 中表示为一个带有显示三角形的捆绑包,单击该三角形会显示资源和源文件夹。这些文件夹包含可从 Playground 的主要 Swift 代码轻松访问的其他内容。要查看这些文件夹,请选择“视图”>“导航器”>“显示项目导航器”(或直接按 Command-1)。

打开一个新的 Playground 并点击 cmd + 1 以查看左侧窗格,然后将文件拖到文件source夹中以在 Playground 中使用。

笔记:

源文件夹中的文件被编译为一个框架,这意味着如果您希望在 Playground 中可以访问类、函数等,它们必须明确标记为public.

public class VisibleClass {
}

class InvisibleClass {
}

来源:发布博客

将项目编译到框架中

  1. 如果还没有,将项目移动到工作区。(文件 - >另存为工作区)会做的伎俩
  2. 将框架目标添加到您的项目中
  3. 构建框架
  4. 确保您要访问的文件已添加到您的框架目标
  5. 将 Playground 添​​加到工作区(不是项目)
  6. 利用@testable import YourFrameworkName
  7. 在游乐场访问代码

我在这里写了一篇文章,如果你想看看的话,会更详细一点。

于 2015-03-23T21:28:45.333 回答
30

他们不能。游乐场是独立的。这有望在未来有所改变。

编辑:从 Xcode 6.3 开始,Playgrounds 现在可以包含支持代码。他们仍然看不到同一项目中的其他代码,但可以将代码添加到 Playground 的支持文件夹中,以便在 Playground 内使用。有关更多信息,请参阅Swift 博客

于 2014-06-05T08:23:07.593 回答
5

是的。我首先在 Sources 目录中添加了一个类文件。我公开了所有内容:

  • 班级
  • 在里面
  • 会员

经过多次尝试,没有任何效果。XCode 崩溃了,重新打开后它就像一个魅力。

在 Playground 中使用 Sources/Dna.swift

于 2016-05-10T00:12:12.937 回答
0

在 Xcode 10 的项目导航器中:

  1. 将源代码文件添加到 Playground 的 Sources 文件夹中。
  2. 将文件从 Playground 的 Sources 文件夹拖到项目中的所需位置(您应该会看到小“圆圈中的加号”图标出现。
  3. 结束拖动,然后在“添加文件”对话框中取消选中“如果需要复制”

源文件现在“存在”在 Playground 包中;项目引用它(您可以使用文件检查器进行验证)。

我尝试了另一种方式:文件位于项目文件夹中,并在操场的 Sources 文件夹中引用,但它不起作用;我最终得到了源代码文件的两份副本。

于 2018-12-10T18:03:59.543 回答