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有帮助。