Swift2 反向地理位置:“反向地理位置”;无法调用类型为';CLPlacemark';具有类型为';(placemark:CLPlacemark)和#x27&引用;

Swift2 反向地理位置:“反向地理位置”;无法调用类型为';CLPlacemark';具有类型为';(placemark:CLPlacemark)和#x27&引用;,swift2,cllocation,xcode7-beta4,Swift2,Cllocation,Xcode7 Beta4,在我的反向定位尝试中,如何初始化这个位置标记,我被难住了 首先,我不知道reverseGeocodeLocation是否正确初始化。它给了我一些问题;但Xcode在这一点上似乎没有问题 真正的问题出现在第55行: placemark=CLPlacemark(placemark:placemarkArr[0]as!CLPlacemark) 我收到错误:“无法使用类型为“(placemark:CLPlacemark)”的参数列表调用类型为“CLPlacemark”的初始值设定项” 我使用的是Xcod

在我的反向定位尝试中,如何初始化这个位置标记,我被难住了

首先,我不知道reverseGeocodeLocation是否正确初始化。它给了我一些问题;但Xcode在这一点上似乎没有问题

真正的问题出现在第55行: placemark=CLPlacemark(placemark:placemarkArr[0]as!CLPlacemark)

我收到错误:“无法使用类型为“(placemark:CLPlacemark)”的参数列表调用类型为“CLPlacemark”的初始值设定项”

我使用的是Xcode 7 Beta 4;所以我不知道这是否是问题所在。我见过关于如何编写这行代码的较旧示例,但它们似乎都是早期的代码版本

谢谢你的帮助和建议!这个问题困扰了我一段时间

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate{

    var manager:CLLocationManager?

    @IBOutlet weak var latitude: UILabel!
    @IBOutlet weak var longitude: UILabel!
    @IBOutlet weak var altitude: UILabel!
    @IBOutlet weak var course: UILabel!
    @IBOutlet weak var speed: UILabel!
    @IBOutlet weak var address: UILabel!


    override func viewDidLoad() {
        super.viewDidLoad()

        manager = CLLocationManager()
        manager!.delegate = self
        manager!.desiredAccuracy - kCLLocationAccuracyBest
        manager!.requestWhenInUseAuthorization()
        manager!.startUpdatingLocation()

    }


    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        print(locations)
        let userLocation:CLLocation = locations[0]
        self.latitude.text = "\(userLocation.coordinate.latitude)"
        self.longitude.text = "\(userLocation.coordinate.longitude)"
        self.course.text = "\(userLocation.course)"
        self.speed.text = "\(userLocation.speed)"
        self.altitude.text = "\(userLocation.altitude)"

        let geocoder = CLGeocoder()

        geocoder.reverseGeocodeLocation(userLocation) { (placemarkArr, error) -> Void in

            var placemark:CLPlacemark!
            //let gp = userLocation

            if error == nil && placemarkArr!.count > 0 {
                print(userLocation)

                placemark = CLPlacemark(placemark: placemarkArr[0] as! CLPlacemark)

                var addressString: String = ""
                if placemark.ISOcountryCode == "TW" {
                    if placemark.country != nil {
                    addressString = placemark.country!
                    }
                    if placemark.subAdministrativeArea != nil {
                    addressString = addressString + placemark.subAdministrativeArea! + ", "
                    }
                    if placemark.postalCode != nil {
                        addressString = addressString + placemark.postalCode! + " "
                    }
                    if placemark.locality != nil {
                        addressString = addressString + placemark.locality!
                    }
                }
            }
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }




}

我不再有这个问题了。我的代码可能与上面的代码稍有不同,因此我已将初始化reverseGeocodeLocation的代码部分粘贴到下面:

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate{

let locationManager = CLLocationManager()

var longitude: Double!
var latitude: Double!

var thoroughfare = "unknown"
var subLocality = "unknown"
var subAdministrativeArea = "unknown"
var postCode = "unknown"
var locality = "unknown"

override func viewDidLoad() {
    super.viewDidLoad()

    self.locationManager.requestAlwaysAuthorization()
    self.locationManager.requestWhenInUseAuthorization()

    if CLLocationManager.locationServicesEnabled() {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.startUpdatingLocation()
    }

}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    latitude = userLocation.coordinate.latitude
    longitude = userLocation.coordinate.longitude

    let userLocation:CLLocation = locations[0]

    CLGeocoder().reverseGeocodeLocation(userLocation) { (placemarks, error) -> Void in

        if(error == nil) {
            let loc = placemarks![0]

            self.thoroughfare = String!(loc.thoroughfare)
            self.subLocality = String!(loc.subLocality)
            self.subAdministrativeArea = String!(loc.subAdministrativeArea)
            self.postCode = String!(loc.postalCode)
            self.locality = String!(loc.locality)
    } else {
            //print(error)
        }
        print("thoroughfare: " + self.thoroughfare)
    }
}

我不再有这个问题了。我的代码可能与上面的代码稍有不同,因此我已将初始化reverseGeocodeLocation的代码部分粘贴到下面:

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate{

let locationManager = CLLocationManager()

var longitude: Double!
var latitude: Double!

var thoroughfare = "unknown"
var subLocality = "unknown"
var subAdministrativeArea = "unknown"
var postCode = "unknown"
var locality = "unknown"

override func viewDidLoad() {
    super.viewDidLoad()

    self.locationManager.requestAlwaysAuthorization()
    self.locationManager.requestWhenInUseAuthorization()

    if CLLocationManager.locationServicesEnabled() {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.startUpdatingLocation()
    }

}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    latitude = userLocation.coordinate.latitude
    longitude = userLocation.coordinate.longitude

    let userLocation:CLLocation = locations[0]

    CLGeocoder().reverseGeocodeLocation(userLocation) { (placemarks, error) -> Void in

        if(error == nil) {
            let loc = placemarks![0]

            self.thoroughfare = String!(loc.thoroughfare)
            self.subLocality = String!(loc.subLocality)
            self.subAdministrativeArea = String!(loc.subAdministrativeArea)
            self.postCode = String!(loc.postalCode)
            self.locality = String!(loc.locality)
    } else {
            //print(error)
        }
        print("thoroughfare: " + self.thoroughfare)
    }
}

你解决了这个问题吗?我也有同样的问题你解决了吗?我也有同样的问题到底出了什么问题?我不太确定。如果你读了我的第一篇文章,Xcode不喜欢这段代码。我的答案中的代码略有不同,但这个问题可以通过以下几点得到解决:1。在Xcode和Swift 2中更新。解析库3中的更新。或者我的代码示例中的细微变化。那么,到底是什么问题呢?我不太确定。如果你读了我的第一篇文章,Xcode不喜欢这段代码。我的答案中的代码略有不同,但这个问题可以通过以下几点得到解决:1。在Xcode和Swift 2中更新。解析库3中的更新。或者我的代码示例中的细微变化。