首页 文章

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

提问于
浏览
39

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

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

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

var x = Foo()

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

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

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

4 回答

  • 3

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

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

  • 27

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

    Playground's Sources Folder

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

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

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

    注意:

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

    public class VisibleClass {
    }
    
    class InvisibleClass {
    }
    

    资料来源:release blog

    Compile Project Into Framework

    • 如果尚未将项目移动到工作区 . (文件 - >另存为工作区)可以解决问题

    • 将框架目标添加到项目中

    • 构建框架

    • 确保要访问的文件已添加到框架目标中

    • 将游乐场添加到 workspace (不是项目)

    • 使用 @testable import YourFrameworkName

    • 在操场上访问代码

    如果你想check it out,我在这里写了一篇更详细的内容 .

  • 0

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

    • init

    • 成员

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

    Using Sources/Dna.swift in Playground

  • 27

    在Xcode 10的Project Navigator中:

    • 将源代码文件添加到playground的Sources文件夹中 .

    • 将文件从playground的Sources文件夹拖到项目中的所需位置(您应该会看到小"plus in a circle"图标出现 .

    • 结束拖动,然后在“添加文件”对话框中取消选中"copy if needed"

    源文件现在“生活”在游乐场包中;项目引用它(您可以使用文件检查器验证) .

    我反过来尝试过:文件位于项目文件夹中,并在playground的Sources文件夹中引用,但它不起作用;我最终得到了两份源代码文件 .

相关问题