【问题标题】:Google Maps SDK with Swift, myLocation can be nil带有 Swift 的 Google Maps SDK,myLocation 可以为 nil
【发布时间】:2015-08-10 14:17:32
【问题描述】:

我正在使用适用于 iOS 的 Google Maps SDK,并且想知道用户的当前位置。根据文档,如果没有可用的位置,GMSMapView 上的 myLocation 属性将返回 nil 值:

如果启用“我的位置”,则显示用户位置点的位置 被绘制。如果它被禁用,或者它被启用但没有位置数据 可用,这将为 nil。

但是,当使用 Swift 时,如果无法检查 nil,因为该字段被声明为非 nil。当然,如果该字段在运行时为 nil,则意味着应用程序将崩溃。

有谁知道如何解决这个问题?我想知道位置是否不为零,如果不是,请在我的代码中使用该值。

【问题讨论】:

    标签: ios swift google-maps


    【解决方案1】:

    不可能检查 nil

    这是不正确的。 myLocation 是一个隐式展开的可选,可以与nil 进行比较,例如

    let location = self.mapView.myLocation
    if location != nil {
        // Use location ...
    }
    

    【讨论】:

      【解决方案2】:

      看起来您可以使用键值编码来做到这一点。

      // Will *not* work as 'myLocation' declared as non-nil
      if let location = self.mapView.myLocation {
          ...
      }
      
      // Works using KVO.
      if let location = self.MapView.valueForKeyPath("myLocation") as? CLLocation {
          ...
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-11
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多