首页 > 解决方案 > Xcode Playgrounds:源文件无法互相访​​问

问题描述

我正在 Xcode 中创建一个游乐场,但我不明白为什么“源”文件不能相互通信。我正在使用 SpriteKit,这意味着每个场景有一个 swift 文件是理想的,在我的情况下,我每个级别都有一个场景。我无法使用快速的解决方法并将所有内容添加到一个庞大的文件中......必须有更好的方法。这两个 swift 文件的两个类都是公开的。您应该能够访问它们。谢谢!

当我尝试从另一个类 TitleScene 中的一个类 LevelScene 中获取对象时出现此错误。

在这之后

let levelScene = LevelScene(fileNamed: "LevelScene")

有时候是这样的

Cannot find 'LevelScene' in scope

我知道这篇文章。这个解决方案仍然对我不起作用。

Xcode Playground 无法访问 Sources 文件夹中的 swift 文件

我在 Xcode 12.4 上。

谢谢!

标签: swiftxcodeswift-playgroundaccess-levels

解决方案


您需要将每个文件中的所有类/结构声明为public. 因此,如果您在文件中定义了这样的结构:

struct Node {
  var id: Int
}

你需要声明是这样的:

public struct Node {
  var id: Int
}

然后你的代码应该可以工作。只要您将它们声明为公共,您就可以在另一个文件中使用一个文件中的结构。类似的概念适用于这些结构/类中的任何函数/方法。即使使用此解决方案,您也可能会发现 Xcode 12.4 抱怨未在范围内找到类型。我相信,这是一个已知的错误。我的 Xcode 12.4 上有同样的错误。即使出现该错误,我也能够构建和运行代码。


推荐阅读