繁体   English   中英

打印导入的枚举大小写会给出枚举名称而不是大小写名称

[英]Printing imported enum case gives enum name instead of case name

根据文档和该线程以及其他内容,对于一个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可以是目标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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM