当前位置: 首页 > 面试题库 >

快速从封闭中获取数据

陶朝明
2023-03-14
问题内容

我在解析中进行了查询,并获取了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。捕获外部上下文是使闭包不仅仅是函数的原因。

但是请注意,在变量具有您确定的值之前,您仍然需要等待闭包实际运行。它不会立即同步可用。另外,捕获外部变量可以使它们保持活动状态,并偶尔导致循环引用和类似问题(这就是为什么有时在引用成员变量或函数时会收到关于“捕获自身”的警告)的原因。



 类似资料:
  • 问题内容: 所以我可以这样做: 但是我找不到办法。我想做类似的事情: 这也不起作用: 问题答案: Swift 2.0 您可以使用构造函数初始化Integer

  • 问题内容: 我正在尝试使用POST从PHP页面获得简单的文本响应。我有以下代码: 虽然这段代码不会引发任何错误,但是当我这样调用它时: 即使我更改了该行,它也只会打印:“什么也没返回”: 对此: 它确实打印出正确的响应。我的变量在这里做错了吗? 问题答案: 这是在调用使用完成处理程序块/关闭的异步函数。因此,您需要在自己的代码中使用完成处理程序模式。这包括将方法的返回类型更改为,并添加一个新的闭包

  • 问题内容: 我正在尝试在iOS 8中针对SWIFT中的Objective-C 实现答案 我打电话给 这将导致“致命错误:在展开可选值时意外发现nil” 问题答案: 试试这个代码:

  • 问题内容: 说我正在使用此代码将图像保存到Directroy文档中 那我该如何找回呢?请记住,与iOS8相比,确切的路径经常更改 问题答案: 您可以在运行时找到用于写入图像的文档目录路径,以便读取图像,可以使用确切的逻辑: Swift 3和Swift 4.2 迅捷2

  • 我对swift非常陌生,所以我的代码中可能会有很多错误,但我试图实现的是向带有paramters的本地主机服务器发送请求。更重要的是,我试图实现它,因为我的函数接受两个参数。我不确定如何将这两者结合到实际的URLRequest中?以下是我到目前为止所尝试的

  • 问题内容: 我需要将包含4个字节整数(小尾数)的二进制文件读入我的Android应用程序的2D数组中。我当前的解决方案如下: 对于2k * 2k的阵列,这非常慢,大约需要25秒。我在DDMS中可以看到垃圾收集器正在加班,因此这可能是速度缓慢的原因之一。 必须有一种使用ByteBuffer将该文件读入数组的更有效的方法,但是目前我看不到它。关于如何加快速度的任何想法? 问题答案: 为什么不读入4字节