从函数Swift返回值

时间:2014-12-31 13:09:39

标签: objective-c iphone xcode swift

我知道这可能是一个简单的任务,我想返回currentLocGeoPoint的值并返回{PAMEbject类型的Objects数组。

  1. 尝试将其保存为全局变量,但它不起作用,因为它是异步的,并且尚未获取值。返回空。
  2. 尝试return currentLocGeoPoint并将Void in更改为PFGeoPoint in。给出错误:PFGeoPoint is not convertible to 'Void'
  3. 所以我不确定如何获取变量currentLocGeoPoint

    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
        CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: { (placemarks, error) -> Void in
            if (error != nil) {
                println("Error:" + error.localizedDescription)
                //return
            }
            if placemarks.count > 0 {
                let pm = placemarks[0] as CLPlacemark
                self.displayLocationInfo(pm)
                currentLoc = manager.location 
                currentLocGeoPoint = PFGeoPoint(location:currentLoc)
                var query = PFQuery(className:"Bar") 
                query.whereKey("BarLocation", nearGeoPoint:currentLocGeoPoint, withinMiles:10) 
                query.limit = 500
                query.findObjectsInBackgroundWithBlock {
                    (objects: [AnyObject]!, error: NSError!) -> Void in
                    if objects != nil {  
                    } else {
                        println("error: \(error)")
                    }
                }
            } else {
                println("error: \(error)")
            }
        })
    }
    

2 个答案:

答案 0 :(得分:1)

我不理解"我想要返回currentLocGeoPoint"的概念。把它归还给什么?您使用的是CLLocationManagerDelegate方法,因此没有人将其退回。

但是,您可以做的是,当请求完成时(即在此闭包内),调用其他需要currentLocGeoPoint的函数。或者,您可以更新UI以反映更新的信息(确保将更新分发给主线程)。或者,如果您有其他需要了解新数据的视图控制器或模型对象,您可以发布通知,让他们知道有更新的currentLocGeoPoint。但是在这种方法中,没有人会向你回复"数据。

答案 1 :(得分:0)

您可以将其分配给班级的存储属性。只需使用

self.<property> = currentLocGeoPoint