ios - 打印导入的枚举案例给出枚举名称而不是案例名称
问题描述
根据文档和这个线程等,对于 Ints 的枚举,我可以通过简单地执行以下操作将案例名称打印为字符串:
enum TestEnum: Int {
case one
case two
case three
}
let testEnum = TestEnum.two
print(testEnum)
// prints "two"
这当然有效。但是如果我尝试对CKAccountStatus做同样的事情,它会打印枚举的名称:
import CloudKit
let testStatus = CKAccountStatus.noAccount
print(testStatus)
// prints "CKAccountStatus"
CKAccountStatus 是一个 Ints 的枚举,就像上面的测试枚举一样:
public enum CKAccountStatus : Int {
case couldNotDetermine
case available
case restricted
case noAccount
}
我做错了什么和/或为什么会这样?
解决方案
你TestEnum
是一个快速的枚举。CKAccountStatus
可能是 Objective C 枚举。
您可以通过添加以下内容来确认CustomStringConvertible
协议来实现它:
extension CKAccountStatus: CustomStringConvertible {
public var description: String {
switch self {
case .noAccount:
return "noAccount"
case .available:
return "available"
case .restricted:
return "restricted"
case .couldNotDetermine:
return "couldNotDetermine"
}
}
}
let testStatus = CKAccountStatus.available
print(testStatus) // available
推荐阅读
- android-studio - Scroll ListView 独立窗体父ScrollView(Android Studio)
- spring-kafka - 如何关闭现有的 kafka 生产者
- c# - 自动映射,复制地图
- python - 打开没有按钮的 Tkinter 颜色选择器
- server - 单击按钮后如何使用 Nuxt 中的私有 API 密钥发送请求?
- c++ - 结构中类型不完整的 c++ unique_ptr 即使使用析构函数也无法编译
- elasticsearch - 可以在弹性搜索7中使用文本类型搜索整个句子
- javascript - 如何使用 Node js 获取有向图输出
- python-3.x - NER BI-LSTM 中的训练和测试集维度
- okta - 对响应 API 调用以获取或刷新当前会话的 id 属性感到困惑