根据文档和 this thread ,除其他外,对于 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
协议(protocol)来实现它:
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
关于ios - 打印导入的枚举案例给出枚举名称而不是案例名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55419068/