swift - 如何在 Swift 中使新数据类型可全局访问?

标签 swift xcode types global enumeration

假设我们正在制作一款游戏。该游戏的难度可以实时(游戏中期)更改,并且可以通过始终显示在屏幕上的三个按钮随时控制。

表示此应用程序“状态”的 Swift 类型是:

enum CurrentDifficultyState {
    case low
    case medium
    case max
}

假设我们已将此代码放入 ViewController。

但是......在我们的模型中......我们有像 enemyController.swift 这样的东西,它有一个像 generateEnemy(currentDifficulty: CurrentDifficultyState) 这样的成员函数。

这个敌人的“难度”将取决于它生成时这个枚举的状态。

但是,当我们这样做时,XCode 提示(从文件 enemyController.swift 中)没有像“CurrentDifficultyState”这样的类型,大概是因为它没有在 enemyController.swift 文件中定义(它是写在 ViewController 文件中)。

那么……处理这个问题的正确方法是什么?我们可以将此代码移动到哪里(或者它缺少什么关键字),以便它将成为全局(静态?)可接受的类型,就像 StringInt...整个应用程序的所有类都可以访问吗?

我最后做的是创建一个名为“myGlobalTypes.swift”的新 swift 文件并将枚举代码放在那里。

这行得通!

但这似乎是一种无用的方法。

谁能教教我?谢谢!

PS - 请不要要求更多代码......“游戏”只是一个假设的例子,为问题提供一些背景(这是一般性的)......但我没有足够的经验来问真正的问题直截了当,因为我不知道所有相关术语。

最佳答案

只需将您的 enum 放在您想要的任何文件的顶级范围内。例如,将它放在顶层的 enemyController.swift 文件中(在 UIViewController 类之外)

关于swift - 如何在 Swift 中使新数据类型可全局访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48315315/

相关文章:

string - 遍历字符串字符以删除 block 引号

iphone - Xcode 6.3.2 应用程序没有有效签名

c++ - 在 C++ 中创建自定义数据类型

swift - 在运行时获取动态类型的单元格不起作用

swift - 从 Swift 中的触摸返回坐标

ios - 如何回到 Root View Controller

objective-c - 路由我 : Location & Screen Position

ios - 在 cocoapod 中使用多个 Assets 目录

Typescript Array[T] 接受 {..T} 作为有效类型

json - 确保传入的 JSON 响应符合模式?