快速为Double的每个数组元素分配值并返回double数组函数

时间:2019-05-09 21:45:47

标签: arrays swift double

我有一个Double函数返回数组。似乎函数调用使数组索引跳动,因为存储在函数内部数组的每个元素中的值仅存在于{}中,但返回的值为null。

我想获得单独的经度和纬度值,所以我想获得2个不同的值

func getLongLatitudeFromAddress(address:String)-> [Double]
    {
        var lonLatArray = [Double]()
        let geocoder = CLGeocoder()
        geocoder.geocodeAddressString(address) {
            placemarks, error in
            let placemark = placemarks?.first
            lonLatArray.append( (placemark?.location?.coordinate.latitude)!)
            lonLatArray.append ((placemark?.location?.coordinate.longitude)!)

     //the lonLatArray printed values inside here
            print("Lat: \(lonLatArray[0]), Lon: \(lonLatArray[1])")
        }
        //but outside here no value
        return lonLatArray
    }

当我调用函数时

let d:[Double] = getLongLatitudeFromAddress("1234 somewhere CA 92222")
print("\(d[0]). \(d[1])") <-- This get index out of bounce problem.

我们似乎无法在其中的闭包内分配任何值。

我以另一种方式更改了函数,但是如何从下面的函数中获取array [0]和array [1]

func getLongLatitudeFromAddress(address:String, completion: @escaping ([Double]?)->())
    {

        let geocoder = CLGeocoder()
        geocoder.geocodeAddressString(address) {
            placemarks, error in
            let placemark = placemarks?.first

            completion([(placemark?.location?.coordinate.latitude)!,(placemark?.location?.coordinate.longitude)!])

        }

    }

0 个答案:

没有答案