swift - 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 上。
谢谢!
解决方案
您需要将每个文件中的所有类/结构声明为public
. 因此,如果您在文件中定义了这样的结构:
struct Node {
var id: Int
}
你需要声明是这样的:
public struct Node {
var id: Int
}
然后你的代码应该可以工作。只要您将它们声明为公共,您就可以在另一个文件中使用一个文件中的结构。类似的概念适用于这些结构/类中的任何函数/方法。即使使用此解决方案,您也可能会发现 Xcode 12.4 抱怨未在范围内找到类型。我相信,这是一个已知的错误。我的 Xcode 12.4 上有同样的错误。即使出现该错误,我也能够构建和运行代码。
推荐阅读
- c# - 搜索控件。C#、WinForms、用户控件
- python - 此平台不支持 XX-cp36-cp36m-linux_x86_64.whl
- mysql - 两个参数之一满足(一个,或另一个,或两者)
- php - 一个字符串中的 POST 数组,用逗号分隔 PHP
- python - 不明白这个 ValueError 的原因
- r - R 在哪里存储它的包?
- java - Java - Spring Boot:Access-Control-Allow-Origin 不起作用
- javascript - 如何让我的 if 语句等待获取请求完成( GUARD )使用角度
- java - 是否有任何选项可以在 java 中加密代码,它应该是解密并仅在运行时执行?
- laravel - 同步运行 Laravel 作业链