【问题标题】:Creating class for defining constants in swift创建用于在 swift 中定义常量的类
【发布时间】:2014-10-01 11:51:08
【问题描述】:

注意:我想在 swift 中实现类似的功能 - Where to store global constants in an iOS application?

我有两个类 - MasterViewController 和 DetailViewController

我想定义一个枚举(参考下面的枚举)并在两个类中使用它的值:

enum Planet: Int {
    case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}

我尝试在 MasterViewController 中定义它并在 DetailViewController 中使用它,如下所示:

let aPlanet = Planet.Earth

但是编译器在抱怨:(

“使用未解析的标识符 Planet”

通常在我的目标 c 代码中,我曾经有一个全局常量文件,我曾经在 app-prefix.pch 文件中导入它,这使得我的项目中的所有文件都可以访问它,但在这种情况下我一无所知.

【问题讨论】:

  • 你确定你的枚举文件正在编译吗?这段代码对我有用。
  • 是的.. 交叉验证,你能分享你的示例代码可能是我遗漏了一些小东西。
  • 我确实是把你的第一个代码块放到一个文件中,将第二个代码块放到同一个项目的另一个文件中,它编译得很好。
  • 您的枚举是否在另一个块中定义,也许是一个类?
  • 明白了..你发现我的错误了,谢谢 :)

标签: enums swift constants


【解决方案1】:

如果您的枚举是在这样的类中定义的:

class MyClass {
    enum Planet: Int {
        // ...
    }
}

您必须通过您的班级访问它:

var aPlanet = MyClass.Planet.Earth

您还想使用rawValue 属性。您将需要它来访问实际的 Int 值:

var aPlanet = MyClass.Planet.Earth.rawValue

【讨论】:

  • 函数 toRaw() 现在已被 Swift 2.0 中的属性 .rawValue 替换。所以你现在应该写 MyClass.Planet.Earth.rawValue
【解决方案2】:

在 swift 中,您可以在任何类或函数之外声明枚举、变量或函数,并且它将在您的所有类中(全局)可用(无需导入特定文件)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-01
    • 2019-10-07
    • 1970-01-01
    • 2018-11-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多