【问题标题】:Can Swift playgrounds see other source files in the same project?Swift Playgrounds 可以查看同一个项目中的其他源文件吗?
【发布时间】:2014-06-04 04:36:05
【问题描述】:

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

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

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

var x = Foo()

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

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

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

【问题讨论】:

标签: swift xcode directory swift-playground


【解决方案1】:

有两种方法可以在 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 {
}

来源:release blog

将项目编译到框架中

  1. 如果尚未将项目移至工作区。 (文件 -> 另存为工作区)就可以了
  2. 将框架目标添加到您的项目中
  3. 构建框架
  4. 确保将您要访问的文件添加到您的框架目标中
  5. 将 Playground 添​​加到工作区(不是项目)
  6. 使用@testable import YourFrameworkName
  7. 游乐场的访问代码

如果你想check it out,我在这里写了一篇更详细的文章。

【讨论】:

  • 不幸的是,它对我不起作用。我仍然收到“没有这样的模块'MyClass'”错误。该类是专门公开的,并复制到 Sources 目录。
  • @JonM - 您的项目中一定有其他事情发生,我无法从您当前的描述中真正调试。这也是一个相当新的功能,所以它一定会打嗝。继续努力:)
  • 不是问题@Logan - 感谢您的回复。我已经设法通过不依赖纯操场进行测试来解决它:)
【解决方案2】:

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

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

【讨论】:

  • 我设法为此创建了一个解决方法 (stackoverflow.com/questions/24045245/…),但在使用这样的 Swift 文件时 Xcode 似乎更频繁地崩溃。
  • 随着 Xcode 6.3 的发布正式改变(见下文:stackoverflow.com/a/29220769/2611971
  • @Logan:虽然 Xcode 6.3 现在确实允许在 Playground 中支持 swift 文件,但确实将 Playground 添​​加到项目中不允许 Playground 看到项目中的其他代码。
  • 啊,我明白了。感谢您为我澄清。
  • 什么?那么我们应该如何单独测试应用程序文件呢?你是说我们甚至无法控制测试的链接,并且必须运行整个应用程序来测试一个简单的模型结构?请看:stackoverflow.com/questions/28128169/…
【解决方案3】:

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

  • 初始化
  • 成员

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

【讨论】:

    【解决方案4】:

    在 Xcode 10 的项目导航器中:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多