Xcode Playgrounds:源文件无法互相访​​问

Posted

技术标签:

【中文标题】Xcode Playgrounds:源文件无法互相访​​问【英文标题】:Xcode Playgrounds: Source files are unable to be accessed by each other 【发布时间】:2021-03-31 22:01:02 【问题描述】:

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

当我尝试从一个类 LevelScene 到另一个类 TitleScene 中的对象时收到此错误。

之后

let levelScene = LevelScene(fileNamed: "LevelScene")

发生这种情况

Cannot find 'LevelScene' in scope

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

Xcode playgrounds can't access swift files in Sources folder

我在 Xcode 12.4 上。

谢谢!

【问题讨论】:

这似乎是对游乐场的误解。只有一个游乐场。 Sources 文件是对 Playground 可用的库,而不是对彼此可用。 我已将所有内容放在一个源文件中。鉴于我在那里链接的问题的答案,我仍然不明白这个逻辑。我可以发誓在这个版本出来之前我有访问控制。 (Xcode 12.4)。感谢您的回复! 【参考方案1】:

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

struct Node 
  var id: Int

你需要声明是这样的:

public struct Node 
  var id: Int

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

【讨论】:

以上是关于Xcode Playgrounds:源文件无法互相访​​问的主要内容,如果未能解决你的问题,请参考以下文章

强制 Swift Playgrounds (xcode) 在不模拟 iOS 的情况下使用 MacOS SpriteKit

Audiokit 4.7 Playgrounds 未编译。错误:无法查找符号:

Xcode 9 Swift 4 Playgrounds UIGestureRecognizer 不工作

如何在 XCode 8 Playgrounds 中使用 Swift 2.3?

如何防止 Xcode 7 Playgrounds 自动运行?

如何让 SpriteKit Playgrounds 在 Xcode 8 beta 中工作?