Печать импортированного регистра enum дает имя enum вместо имени case - PullRequest
0 голосов
/ 29 марта 2019

В соответствии с документацией и этой цепочкой , среди прочего, для перечисления 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
}

Что я делаю не так и / или почему это происходит?

1 Ответ

1 голос
/ 30 марта 2019

Ваш TestEnum - быстрое перечисление. CKAccountStatus может быть Objective C enum.

Вы можете достичь этого, подтвердив протокол 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...