- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Firebase 位置模块 Geofire 来搜索查询我附近的一些位置。该查询填充一个数组,然后该数组应显示在表上(通过表重新加载)。不幸的是,当 TableView 重新加载时,数组尚未加载数据(count = 0)。我正在使用异步回调(特别是在 Geofire 中烘焙的回调,应该在整个查询完成后触发),但尽管我读过有关该函数的内容,但我似乎无法让它工作。这是文档:https://github.com/firebase/geofire-objc
关于如何在不添加计时器来延迟我的重新加载表代码的情况下顺利完成这项工作,有什么建议吗?
这里是一些示例代码:
var keyArray = [String]()
let query = geoFireSearchQuery(someLocation)
query.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in
keyArray.append(key)
})
query.observeReadyWithBlock({
self.tableView.reloadData()
self.geofireRef.removeAllObservers()
})
我尝试解决可能的原因并使用各种测试,我现在知道这里的问题是数据加载到数组的速度不够快 - 我认为使用这种异步加载会起作用,但我觉得我错过了一些东西(仍然学习)。
已解决:这本质上是一个糟糕的问题,应该成为如何不在 StackOverlow 上提问的示例。我不想让细节陷入困境,这是一个错误。尽管缺乏信息,还是感谢大家的意见。
我遇到的问题是我的数组是这样创建的:查询大数据集,对数据进行计算,存储在大对象中,存储在数组中,然后对大对象数组进行排序。繁重的计算。
我的hacky解决方案是使用keys.count作为任何给定查询的最终(大)数组中的对象数量的计数器。然后我设置了一个“did Set”变量,每次添加大数组时都会触发该变量。在 did Set block 中我写了一个简单的 if 语句;
static var bigArray = [HugeObjects]() {
didSet {
if self.bigArray.count == self.keys.count {
tableView.reloadData()
}
}
}
缺点是每次将对象添加到数组时都会触发 didSet(虽然上限为 30),但我不知道这会对性能产生多大影响。不过,该解决方案有效,因为 tableView 现在会在 bigArray 完全写入并排序后重新加载。
对这个不好的问题表示歉意。
最佳答案
看起来 self.geofireRef.removeAllObservers()
是罪魁祸首。如果删除观察者,将永远不会调用observeReadyWithBlock。你不应该这样做
self.geofireRef.removeAllObservers()
在observeEventType
内
关于ios - 通过异步调用问题将数据加载到数组中(Geofire、Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39305195/
我想为我的 CocoaPods 项目实现 GeoFire。因此,我将以下 pod 添加到我的 Podfile 中: pod 'GeoFire', :git => 'https://github.com
我在 Angular 6 上初始化 GeoFire 时遇到问题。当我尝试初始化 GeoFire 时, geofire__WEBPACK_IMPORTED_MODULE_2__ is not a con
current GeoFire literature讨论删除单个 key ,但不能一次删除多个 key 。 是否可以使用geoFire.remove()一次删除多个 key ? 如果是,此操作的正确语
我已经尝试了好几个星期才让它发挥作用。文档看了很多遍,网上好像没有这方面的例子。 目标:我想要做的就是将当前用户位置 10 公里半径范围内的所有帖子打印到控制台。 问题:我不太明白需要将哪些参数放入用
我想制作一个应用程序,当用户进入某个区域时发送通知。我知道存在 Geofire,我想使用,因为我使用的是 Firebase 数据库,但我从未使用过它,而且我不知道它是否具有与 Google Geofe
我正在尝试将所有用户添加到距离用户位置一定距离内的列表中。我已成功获取用户当前位置,并使用 geofire 将其存储在我的数据库中。我知道我必须使用 geofire 来查询结果,但我不确定如何将用户添
我正在制作一个出租车应用程序,我使用 Geofire 和 Geoquery 找到最近的司机。 现在我有 3 种类型的汽车“3 座、4 座和 7 座”,用户可以在它们之间切换,我想更改查询以从正确的引用
如何使用 Geo Queries 获取靠近传递的 GeoLocation(double lat, double lng) 的所有位置.我有以下代码(它什么也没发生): public void setC
我对使用 Firebase 及其位置库 GeoFire 还很陌生。目前,我在构建数据时遇到了一些问题。 目前我的数据库是这样的: users facebook:xxxxx displayN
我在 geofire-js 上遇到了一些问题. 我的应用程序中有两种不同类型的用户。用户和 worker 。基本上,用户发布的职位和工作人员都可以看到这些职位。但我只想向与当前用户关系密切的工作人员显
我很难理解 GeoFire 如何查询附近的位置; 我正在构建一个基于地理的应用程序,它将根据用户位置获取附近的位置。我的数据结构如下 locations -Ke1uhoT3gpHR_VsehI
我通过 GeoFire 将位置数据存储在我的数据库中,结构如下: geofire -Ke1uhoT3gpHR_VsehIv -Kdrel2Z_xWI280XNfGg -g: "dr5r
我有一个应用程序,可以通过 Geofire 的纬度/经度坐标获取存储在我的 Firebase 中的用户周围的附近位置。 我现在希望能够在用户滚动到位置列表底部时获取更多位置(也称为无限滚动)。 为此,
我正在使用 GeoFire 搜索给定半径,用户可以在我的应用中设置该半径并将其存储在 FireBase 上。页面加载时,在运行 GeoFire 查询之前,我将从 Firebase 获取半径。但是,当我
我使用 Firebase 位置模块 Geofire 来搜索查询我附近的一些位置。该查询填充一个数组,然后该数组应显示在表上(通过表重新加载)。不幸的是,当 TableView 重新加载时,数组尚未加载
我有以下函数,它使用 Geofire 然后在嵌套设置中使用 Firebase 查询来获取用户列表。 我首先执行 Geofire 查询来获取 key,然后执行 Firebase 查询并创建与 key 匹
我在 Swift 应用中使用 Firebase 和 GeoFire 3.0 Cocoapod,用世界各地的标记填充 map 。以下是执行圆形查询以获取 map 上当前显示区域内的标记的代码:
我正在制作一个拼车安卓应用程序并使用 firebase 和 geofire。当我按下“Find Sameway Rides”按钮时,它会显示我附近 700 米半径内的用户。但是当没有用户时,它会在我的
在我的应用程序中,我使用 GeoFire 来查询用户周围的用户位置。这是一个类似 Tinder 的应用程序,带有卡片等...我使用 KolodaView 来制作卡片。 查询函数: func query
我正在使用 Firebase 实时数据库制作一个项目。 我必须发布带有时间戳、纬度和经度的图片,并从我的位置搜索 radio 中的图片,按时间戳排序,并使用从现在起 1 天后的时间戳值。 Fireba
我是一名优秀的程序员,十分优秀!