如何在 Swift 中访问枚举中关联值的原始值?

问题描述 投票:0回答:1

如何访问原始值,例如“TmdbImageSize.backdrop(.original).rawValue”?我不知道如何让它发挥作用,或者是否可能。谢谢你的帮助

enum TmdbBackdropSize: String {
    case w300, w780, w1280
    case original
}

enum TmdbLogoSize: String {
    case w45, w92, w154, w185, w300, w500
    case original
}

enum TmdbPosterSize: String {
    case w92, w154, w185, w342, w500, w780
    case original
}

enum TmdbProfileSize: String {
    case w45, w185
    case h632
    case original
}

enum TmdbImageSize {
    case backdrop (TmdbBackdropSize)
    case logo (TmdbLogoSize)
    case poster (TmdbPosterSize)
    case profile (TmdbProfileSize)
}
swift enums
1个回答
0
投票

Swift 中具有关联值的枚举没有像符合 RawRepresentable 的枚举那样固有的“rawValue”属性。每个案例的关联值都需要明确处理。

在您的情况下,要访问 TmdbImageSize.backdrop(.original) 的原始值,您需要直接在枚举中处理它:

enum TmdbBackdropSize: String {
    case w300, w780, w1280
    case original
}

enum TmdbLogoSize: String {
    case w45, w92, w154, w185, w300, w500
    case original
}

enum TmdbPosterSize: String {
    case w92, w154, w185, w342, w500, w780
    case original
}

enum TmdbProfileSize: String {
    case w45, w185
    case h632
    case original
}


enum TmdbImageSize {
    case backdrop(TmdbBackdropSize)
    case logo(TmdbLogoSize)
    case poster(TmdbPosterSize)
    case profile(TmdbProfileSize)

    func rawValue() -> String {
        switch self {
        case .backdrop(let size):
            return size.rawValue
        // handle other cases if needed...
        }
    }
}

// Example usage
let imageSize = TmdbImageSize.backdrop(.original)
let rawValue = imageSize.rawValue()
print(rawValue)

在这里,我向 TmdbImageSize 枚举添加了一个方法 rawValue,用于从关联的枚举情况中提取原始值。现在,您可以调用 imageSize.rawValue() 来获取原始值。

© www.soinside.com 2019 - 2024. All rights reserved.