我在解析中进行了查询,并获取了GeoPoint坐标数组。这是在封闭内部完成的。我只能访问该闭包内的数组值。我需要能够使用这些值,以便它们可以用作地图上的注释,但我无法使用它们。有人可以告诉我如何从闭包中获取数组值。
码:
var user = PFUser.currentUser() user["location"] = geopoint var query = PFUser.query() query.whereKey("location", nearGeoPoint:geopoint) query.limit = 10 query.findObjectsInBackgroundWithBlock({ (objects: [AnyObject]!, error: NSError!) -> Void in for object in objects { var user:PFUser = object as PFUser var otherUsersCoord = [PFGeoPoint]() otherUsersCoord.append(user["location"] as PFGeoPoint) println("The other users coords are: \(otherUsersCoord)") } })}
otherUsersCoord在闭包表达式外部而不是内部声明为var。当将其分配给闭包内时,该更改将反映在闭包外的变量中。这称为“捕获” otherUsersCoord。捕获外部上下文是使闭包不仅仅是函数的原因。
otherUsersCoord
但是请注意,在变量具有您确定的值之前,您仍然需要等待闭包实际运行。它不会立即同步可用。另外,捕获外部变量可以使它们保持活动状态,并偶尔导致循环引用和类似问题(这就是为什么有时在引用成员变量或函数时会收到关于“捕获自身”的警告)的原因。