Swift enum CLAuthorizationStatus - это CLAuthorizationStatus вместо одного из случаев - PullRequest
0 голосов
/ 22 сентября 2019

Это, вероятно, просто глупая ошибка, но у меня есть проблема с моим enum, в которой я полностью застрял.

У меня есть следующий код:

func locationManager(_ manager: CLLocationManager,
                     didChangeAuthorization status: CLAuthorizationStatus) {

    if (status == .authorizedWhenInUse) {
        print("-- authorized when in use")
        locationManager.startUpdatingLocation()
    } else {
        print("--- \(String(reflecting: status))")
    }
    print("--- didChangeAuthorizationStatus = \(status)")

}

НоОтладочные операторы печати у меня в нем распечатывают следующее:

--- __C.CLAuthorizationStatus
--- didChangeAuthorizationStatus = CLAuthorizationStatus

Почему параметр status, который, на мой взгляд, должен быть регистром, относится к перечислению CLAuthorizationStatus (как .accepted) print CLAuthorizationStatus? Это не имеет смысла для меня, и я подозреваю какую-то ошибку новичка, но не могу ее найти ...

По моему мнению, этот код должен вести себя какследующий код:

enum TestEnum {
    case a
    case b
}

var c = TestEnum.a

func test(name e: TestEnum) {

    if e == .a {
        print("case a")
    } else {
        print("other case")
    }
    print(String(reflecting: e))
}

test(name: c)

который печатает, как положено

case a
__lldb_expr_16.TestEnum.a

1 Ответ

1 голос
/ 22 сентября 2019

Это не ваша ошибка, а текущее ограничение Swift для импортированных перечислений.

Возможно, вам придется работать с rawValues:

print(status.rawValue)

Например, 3 означает CLAuthorizationStatus.authorizedAlways, но, насколько я знаю, не существует простого способа получить символическое представление значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...