ios - 如何在少数情况下包含额外属性的情况下创建枚举
问题描述
我需要上传 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
}
解决方案
这可以帮助你——
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)
推荐阅读
- android - 如何从片段中调用非静态类或如何在静态类中调用非静态函数
- python - 我应该如何为我的 CNN 构建这些栅格输入?
- armadillo - 在稀疏矩阵上使用矢量化时的编译器错误
- c++ - 如何将反转的字符串保存为新字符串?
- python - 评估集群性能
- c++ - 关于 ocilib 错误处理的问题,如何使用 ocilib 正确捕获日志错误?
- ios - 快速将 JSON 字符串数组转换为 NSArray
- node.js - 使用权限集拒绝 Firebase 数据库访问
- powershell - 从本地存储库安装包 - 未找到与指定搜索条件匹配的
- javascript - 通过 Ramda.js 复合 AND 条件拒绝数组项