ios - 打印导入的枚举案例给出枚举名称而不是案例名称

标签 ios swift enums

根据文档和 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/

相关文章:

ios - 如何使视频的音轨在IOS中消失

ios - 两个对象没有相互接触,但 contactTestBetween() 返回结果

objective-c - 在 iPhone Simulator 4.3/XCode 4.2 和 4.0.2 中使用 Blocks 会导致应用程序崩溃

ios - 未检测到 AppID

ios - AVPlayerViewController 完成时淡出

ios - 如何显示所有注释调用 Swift

swift - 如何让 Xcode 9 循环说出短语

c# - MVC EnumDropDownListFor 以 Enum Display Description 属性作为值

c - 关于枚举的不同描述

java - 如何获取存储在枚举中的引用?