locationManager未被识别为类变量



我试图实现locationManager方法和let locationManager = CLLocation()变量在代码中的任何地方都没有被识别。当我添加didupdatlocations和didFailWithError方法时,错误就出现了。我试图从用户获得当前位置作为视图加载。如果没有上面提到的方法,应用程序会在centerMapOnLocation方法上中断。

下面是我的代码:
import Foundation
import UIKit
import Firebase
import FirebaseDatabase
import CoreLocation
import MapKit
class MainViewController: UIViewController, CLLocationManagerDelegate{
    var ref: FIRDatabaseReference!
    var refHandle: UInt!
    let locationManager: CLLocationManager = CLLocationManager()
    let regionRadius: CLLocationDistance = 1000
    var currentLocation: CLLocation!
    let geoCoder = CLGeocoder()
    var placemark: CLPlacemark?

    @IBOutlet weak var mapView: MKMapView!
    @IBOutlet weak var userEmailLabel: UILabel!
    @IBOutlet weak var pickUpAddress: UITextField!
    override func viewDidLoad() {
        ref = FIRDatabase.database().reference()

        ////
        locationManager.delegate = self
        locationManager.requestLocation()
        print(locationManager.requestLocation())
        ////

        ////
        refHandle = ref.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
            let dataDict = snapshot.value as! [String: AnyObject]
            print((dataDict))
        })
        let userID: String = FIRAuth.auth()!.currentUser!.uid
        ref.child("users").child(userID).observeSingleEventOfType(.Value, withBlock: { (snapshot) in
        let userEmail = snapshot.value!["email"] as! String
        self.userEmailLabel.text = userEmail
        })
        ////

        ////
        centerMapOnLocation()
        super.viewDidLoad()
        ////
    }
    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]){
        print("locations: (locations)")
    }
    func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
        print("error: (error)")
    }
}
    func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
        if status != CLAuthorizationStatus.Denied{
            locationManager.startUpdatingLocation()
    }
}

    func centerMapOnLocation() {
        currentLocation = CLLocation.init(latitude: (locationManager.location?.coordinate.latitude)!, longitude: (locationManager.location?.coordinate.longitude)!)
        let coordinateRegion = MKCoordinateRegionMakeWithDistance(locationManager.location!.coordinate, regionRadius * 2.0, regionRadius * 2.0)
        mapView.setRegion(coordinateRegion, animated: true)
    }

    func translateLocation() {
        geoCoder.reverseGeocodeLocation(currentLocation, completionHandler: { placemarks, error in
            if error == nil && placemarks!.count > 0 {
            self.placemark = placemarks![0] as CLPlacemark
                self.pickUpAddress.text = self.stringFromPlacemark(self.placemark!)
            }
        })
    }
    func stringFromPlacemark(placemark: CLPlacemark) -> String { // 1
        var line1 = ""
        if let s = placemark.subThoroughfare {
            line1 += s + " "
        }
        if let s = placemark.thoroughfare {
            line1 += s
        }
        var line2 = ""
        if let s = placemark.locality {
            line2 += s + " "
        }
        if let s = placemark.administrativeArea {
            line2 += s + " "
        }
        if let s = placemark.postalCode {
            line2 += s }
        return line1 + "n" + line2
    }
    @IBAction func pickCurrentLocation(sender: AnyObject) {
       translateLocation()
    }
    @IBAction func signOutButton(sender: AnyObject) {
        try! FIRAuth.auth()!.signOut()
        if let storyboard = self.storyboard {
            let viewController = storyboard.instantiateViewControllerWithIdentifier("LoginViewController")
            self.presentViewController(viewController, animated: false, completion: nil)
        }
    }
}

一段时间后我还没有找到答案。我们会很感激你的帮助。

谢谢。

删除第75行某处的顶级右括号,一切都会好起来,它为我构建,问题是它将这些函数视为全局的

最新更新