swift - 静态变量在 Swift 中枚举枚举的问题

标签 swift enums static

Swift 4.2 有一段很棒的代码来枚举枚举,这个问题不仅仅是循环枚举。

我有一个这样的枚举:

enum MyEnum: String {
    case session1 = "Morning"
    case session2 = "Noon"
    case session3 = "Evening"
    case session4 = "Night"
}

此外,我想返回一些对象(比如 sessionDetails)。所以我为它创建了一个扩展。

extension RawRepresentable where RawValue == String {
    var details: <Some_Object_Type> {
        /// Create & return corresponding object
    }
}

所以,如果我想获取中午 session 的详细信息,我可以这样做:

MyEnum.session2.details

好的!现在我想将我的 session 分组为第一批和第二批等。因此在 Enum 中添加了一小段代码:

enum MyEnum: String {
    case session1 = "Morning"
    case session2 = "Noon"
    case session3 = "Evening"
    case session4 = "Night"

    static let firstBatch = [session1.details, session2.details]
    static let secondBatch = [session3.details, session4.details]
    static let weekendBatch = [session1.details, session4.details]
}

请注意,我们不能将存储的属性与枚举一起使用。这是这里“静态”关键字的需要。

我想要的:

我想获取批处理项目的详细信息。下面一行将起作用:

MyEnum.firstBatch

它将给出 session 1 和 2 的详细信息(对象)。

问题:

上面的语句只会运行一次,因为它是静态的。每个 session 的详细信息都是动态的,我希望每次使用 .details

这个词时都应该调用“详细信息”

注意:

我必须将分组项目的详细信息提供给其他一些 util 方法。无法更改 util 方法输入结构。它只需要一组对象来验证。

需要帮助!!

最佳答案

您只需要计算静态属性而不是存储属性。

enum MyEnum: String {
    case session1 = "Morning"
    case session2 = "Noon"
    case session3 = "Evening"
    case session4 = "Night"

    static var firstBatch:[String] {
        return [session1.details, session2.details]
    }

    static var secondBatch:[String] {
        return [session3.details, session4.details]
    }

    static var weekendBatch:[String] {
        return [session1.details, session4.details]
    }
}

关于swift - 静态变量在 Swift 中枚举枚举的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52719994/

相关文章:

ios - Tableview Like Snapchat 发送功能(多选和可滑动标签)

ios - 升级到 Swift 4。iOS 图表无法构建

c# - 将 RadioButton 绑定(bind)到枚举

php - PHP 5.3 之前的静态继承

java - 访问 Java 类的静态字段时出现问题

swift - 无法快速删除解析对象

ios - Swift 3 - 异步作业后关闭 View Controller

c++ - 如何访问封装在类中的未命名的 "enum class"?

java - 在JAVA中使用此方法在ENUM类函数中更改ENUM的值

c++ - 静态非成员变量,对程序中的所有线程来说都是同一个变量吗?