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?