Ios Swift enum CLAuthorizationStatus是CLAuthorizationStatus,而不是其中一个案例

Ios Swift enum CLAuthorizationStatus是CLAuthorizationStatus,而不是其中一个案例,ios,swift,enums,Ios,Swift,Enums,这可能只是一个愚蠢的错误,但我的枚举有一个问题,我完全无法解决 我有以下代码: func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { if (status == .authorizedWhenInUse) { print("-- authorized when in us

这可能只是一个愚蠢的错误,但我的枚举有一个问题,我完全无法解决

我有以下代码:

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)")

}
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)
但我在其中包含的调试打印语句打印以下内容:

--- __C.CLAuthorizationStatus
--- didChangeAuthorizationStatus = CLAuthorizationStatus
为什么参数status(在我看来应该是属于enum CLAuthorizationStatus的情况)与.accepted print CLAuthorizationStatus类似?这对我来说毫无意义,我怀疑一些初学者的错误,但我找不到

在我看来,此代码的行为应类似于以下代码:

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)")

}
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

这不是你的错,而是当前对导入枚举的Swift限制

您可能需要使用以下值:

print(status.rawValue)

例如,但据我所知,没有简单的方法获得值的符号表示。

原始值显示0,这意味着.denied,因此您的答案是正确的。然而,我觉得很奇怪,我必须这样做,因为我遵循的是一个swift开发教程,在该教程中,作者没有这样做,可以按照预期使用enum案例。。。这是否可能是近年来发生变化的行为?该教程为期2年old@charel-f、 我不记得了,但是CLAuthorizationStatus可能只是Int32的别名,print\status可能显示了原始值,而没有.rawValue。无论如何,2岁在Swift世界太老了……无论如何,谢谢你们,使用rawValues有帮助。