Swift游乐场可以在同一个项目中查看其他源文件吗?

时间:2014-06-04 04:36:05

标签: swift xcode6

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

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

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

var x = Foo()

Xcode似乎不喜欢这样,并告诉我'Foo'是一个未解析的标识符。我对操场如何适应项目结构的其余部分感到困惑,因为我的项目中的任何其他Swift文件都可以解决'Foo'问题。

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

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

4 个答案:

答案 0 :(得分:28)

在Playground中使用项目代码的两种方法

游乐场的资源文件夹

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

  

Playgrounds现在在Xcode中表示为一个包含公开三角形的包,单击时显示Resources和Sources文件夹。这些文件夹包含可从操场的主Swift代码轻松访问的其他内容。要查看这些文件夹,请选择查看>导航器>显示Project Navigator(或只需按Command-1)。

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

注意:

源文件夹中的文件被编译为框架,这意味着如果您希望在操场中访问类,函数等,则必须将它们明确标记为public

public class VisibleClass {
}

class InvisibleClass {
}

来源:release blog

将项目编译为框架

  1. 如果项目尚未完成,请将项目移至工作区。 (文件 - >另存为工作区)可以解决问题
  2. 将框架目标添加到项目中
  3. 构建框架
  4. 确保您要访问的文件已添加到框架目标
  5. 将Playground添加到工作区(不是项目)
  6. 使用@testable import YourFrameworkName
  7. 在游乐场中访问代码
  8. 如果你想要check it out,我在这里写了一篇更详细的内容。

答案 1 :(得分:27)

他们不能。游乐场是独立的。这有望在未来发生变化。

编辑:从Xcode 6.3开始,Playgrounds现在可以包含支持代码。他们仍然无法在同一个项目中看到其他代码,但可以将代码添加到Playground的支持文件夹中,该文件夹可以在操场内使用。有关详细信息,请参阅the Swift blog

答案 2 :(得分:4)

是。 我首先在Sources目录中添加一个类文件。 我公开了一切:

  • class
  • init
  • 成员

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

Using Sources/Dna.swift in Playground

答案 3 :(得分:0)

在Xcode 10的Project Navigator中:

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

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

我尝试了另一种方法:文件位于Playground的Sources文件夹中的引用文件夹中的项目文件夹中,但是它不起作用;我最终得到了源代码文件的两个副本。