位置许可确定者

时间:2016-03-12 15:09:10

标签: ios swift cllocationmanager

我正在尝试构建一个权限确定器类,它基本上确定了权限。

到目前为止,我已经完成了以下代码,但是我在案例陈述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
          }

  }
}

1 个答案:

答案 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:我会让你选择最安全的方式,而不是适合你的代码。