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

Max*_*ard 39 swift xcode6

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

class Foo
{
    init()
    {
        println("I made a foo.")
    }
}
Run Code Online (Sandbox Code Playgroud)

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

var x = Foo()
Run Code Online (Sandbox Code Playgroud)

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

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

在此先感谢您的帮助.我知道这很简单.

Log*_*gan 29

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

Playground的源文件夹

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

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

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

注意:

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

public class VisibleClass {
}

class InvisibleClass {
}
Run Code Online (Sandbox Code Playgroud)

来源:发布博客

将项目编译成框架

  1. 如果尚未将项目移动到工作区.(文件 - >另存为工作区)可以解决问题
  2. 将框架目标添加到项目中
  3. 构建框架
  4. 确保要访问的文件已添加到框架目标中
  5. 将Playground添加到工作区(不是项目)
  6. 使用 @testable import YourFrameworkName
  7. 在操场上访问代码

我在这里写了一篇文章,如果你想查看一下,我会详细介绍一下.

  • 不幸的是没有为我工作。我仍然收到“没有这样的模块‘MyClass’”错误。该类是专门公开的并复制到 Sources 目录中。 (2认同)

Lil*_*ard 27

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

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


Uki*_*cas 5

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

  • 在里面
  • 成员

经过大量尝试,没有任何效果。XCode崩溃了,重新打开后一切都像个魅力。

在操场上使用Sources / Dna.swift