提问者:小点点

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


根据留档和这个线程,对于Ints的枚举,我可以通过简单地执行以下操作将案例名称打印为字符串:

enum TestEnum: Int {
    case one
    case two
    case three
}

let testEnum = TestEnum.two

print(testEnum)

// prints "two"

这当然有效。但是如果我尝试对CKAccount tStatus做同样的事情,它会打印枚举的名称:

import CloudKit

let testStatus = CKAccountStatus.noAccount

print(testStatus)

// prints "CKAccountStatus"

CKAccount tStatus是Ints的枚举,就像上面的测试枚举一样:

public enum CKAccountStatus : Int {


    case couldNotDetermine

    case available

    case restricted

    case noAccount
}

我做错了什么和/或为什么会发生这种情况?


共1个答案

匿名用户

您的TestEnum是一个swift枚举。CKAccount tStatus可能是目标C枚举。

您可以通过确认CustomStringConverable协议来实现它,方法是添加:

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