假设我们正在制作一款游戏。该游戏的难度可以实时(游戏中期)更改,并且可以通过始终显示在屏幕上的三个按钮随时控制。
表示此应用程序“状态”的 Swift 类型是:
enum CurrentDifficultyState {
case low
case medium
case max
}
假设我们已将此代码放入 ViewController。
但是......在我们的模型中......我们有像 enemyController.swift 这样的东西,它有一个像 generateEnemy(currentDifficulty: CurrentDifficultyState)
这样的成员函数。
这个敌人的“难度”将取决于它生成时这个枚举的状态。
但是,当我们这样做时,XCode 提示(从文件 enemyController.swift 中)没有像“CurrentDifficultyState”这样的类型,大概是因为它没有在 enemyController.swift 文件中定义(它是写在 ViewController 文件中)。
那么……处理这个问题的正确方法是什么?我们可以将此代码移动到哪里(或者它缺少什么关键字),以便它将成为全局(静态?)可接受的类型,就像 String
或 Int
...整个应用程序的所有类都可以访问吗?
我最后做的是创建一个名为“myGlobalTypes.swift”的新 swift 文件并将枚举代码放在那里。
这行得通!
但这似乎是一种无用的方法。
谁能教教我?谢谢!
PS - 请不要要求更多代码......“游戏”只是一个假设的例子,为问题提供一些背景(这是一般性的)......但我没有足够的经验来问真正的问题直截了当,因为我不知道所有相关术语。
最佳答案
只需将您的 enum
放在您想要的任何文件的顶级范围内。例如,将它放在顶层的 enemyController.swift 文件中(在 UIViewController
类之外)
关于swift - 如何在 Swift 中使新数据类型可全局访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48315315/