首页 > 解决方案 > 如何在少数情况下包含额外属性的情况下创建枚举

问题描述

我需要上传 4 个文件对象。很少有文件有日期,很少有文件有图像。我应该使用什么数据结构?

我试图创建一个枚举

enum File: String, CaseIterable {
    case a = "A"
    case b = "B"
    case c = "C"
    case d = "D"
    var size: String//enum cannot contain stored properties
}

我试图创建一个结构

struct File {
    var name: String//for 4 files
    var size: String//only for A and B
    var image: UIImage// only for C and D
}

标签: iosswift

解决方案


这可以帮助你——

    enum File: String, CaseIterable {
    case a = "A"
    case b = "B"
    case c = "C"
    case d = "D"

    static let sizeMapper: [File: String] = [
        .a: "Size A",
        .b: "Size B"
        ]
    static let nameMapper: [File: String] = [
        .a: "Name A",
        .b: "Name B",
        .c: "Name C",
        .d: "Name D"
        ]
    static let imageMapper: [File: UIImage] = [
        .c: UIImage(),
        .d: UIImage()
        ]

    var size: String {
        return File.sizeMapper[self] ?? ""
    }
    var name: String {
        return File.nameMapper[self] ?? ""
    }
    var image: UIImage {
        return File.imageMapper[self] ?? UIImage()
    }
}

像这样称呼它-

        let size = File.a.size
        print(size)
        let name = File.a.name
        print(name)
        let image = File.c.image
        print(image)

推荐阅读