Swift - 自己的当前位置结构/类(CLLocationManager)

时间:2016-03-30 23:08:50

标签: xcode swift struct location cllocationmanager

我想创建一个自己的结构或类来获取用户的当前位置。

似乎我无法在结构中使用CLLocationManager及其函数(didUpdateLocations,didFailWithError等)(Xcode使所有文本颜色变黑并且我收到错误{ {1}})。当我使用一个类并尝试使用" getPlacemark" -function(从实例类中获取地标)或者直接从创建的实例中获取它(" instancedClass.placemarkInClass" ),但没有任何作用,我只得到An internal error occurred. Source editor is limited.

这是我创建课程的最后一次尝试:

Thread 1: EXC_BAD_ACCESS

在我的ViewController中,我将其设为实例变量( currentLocation = CurrentLocation())并尝试使用它们

  

让userPlacemark = currentLocation.getPlacemark()   和   让userPlacemark = currentLocation.placemark   但没有任何效果。

有没有办法让自己的类或结构来获取当前位置并在其他ViewControllers中使用它?

1 个答案:

答案 0 :(得分:1)

您的代码有两个观察结果:

  1. 完成成员变量设置后,您没有在init中调用[super init]。将init修改为

         init(){
    
           placemark = CLPlacemark()
    
            mLocationManager = CLLocationManager()
            mLocationManager.desiredAccuracy = kCLLocationAccuracyBest
            mLocationManager.requestWhenInUseAuthorization()
            mLocationManager.startUpdatingLocation()
            super.init()
            mLocationManager.delegate = self
           }
    
  2. 设置位置管理员的代表。您应该在创建位置管理器实例后立即在init中执行此操作。请参阅上面的init代码。