我正在尝试构建一个权限确定器类,它基本上确定了权限。
到目前为止,我已经完成了以下代码,但是我在案例陈述case LocationUsage.WhenInUse:
和case .Always:
中一直遇到错误。
它说
枚举大小写不是PrivateResoure.LocationUsage类型的成员吗?
我在这个小struct
中做错了什么?
public struct PrivateResource {
public enum LocationUsage {
case WhenInUse
case Always
}
var usage: LocationUsage?
public var isNotDeterminedAuthorization: Bool {
return CLLocationManager.authorizationStatus() == .NotDetermined
}
public var isAuthorized: Bool {
switch usage {
case LocationUsage.WhenInUse:
return CLLocationManager.authorizationStatus() == .AuthorizedWhenInUse
case .Always:
return CLLocationManager.authorizationStatus() == .AuthorizedAlways
}
}
}
答案 0 :(得分:0)
我看到两个问题:
usage
是一个可选项,因此您需要打开它。
.AuthorizedWhenInUse
和.AuthorizedAlways
不属于CLAuthorizationStatus
选项。
选择是:
授权,拒绝,未确定,受限制
快速修复:
public var isAuthorized: Bool {
switch usage! {
case LocationUsage.WhenInUse:
return CLLocationManager.authorizationStatus() == .Authorized
case .Always:
return CLLocationManager.authorizationStatus() == .Authorized
}
}
两个注释:它解决了问题,但我的示例解决方案改变了你的逻辑 - 你可能必须适应。另外,我强制解开了本例中的Optional:我会让你选择最安全的方式,而不是适合你的代码。