2
以下のスニペットには2つの問題があります。TableView重複しているfirebaseの検索クエリ
- 私は自分のTableViewに重複を取得しています。
:
私が結果を返す何かを検索し、私は結果を返す別のものを探してみました
は、既存の結果は、例えばない新しい結果を示す1になります。私は "ola"を検索し、私のTableViewはolabode、olatunde、olaideのリストを返します。
b。それから私は "bisi"を検索しました。 "bisi"の一致するクエリが見つかった場合、私はまだ "ola"のクエリ結果を取得します。
func searchView(_ searchView: AZSearchViewController, didTextChangeTo text: String, textLength: Int) {
self.resultArray.removeAll()
searchView.reloadData()
guard text != "" else {
return
}
AppFirRef.userRef.queryOrdered(byChild: "username")
.queryStarting(atValue: text)
.queryEnding(atValue: text + "\\uf8ff")
.observe(.value, with: { (snapshot) in
if (snapshot.value is NSNull) {
print("not found")
} else {
print("found")
self.resultArray.removeAll()
searchView.reloadData()
print("\(snapshot.value)")
for case let snap as FIRDataSnapshot in snapshot.children {
guard let value = snap.value as? [String : Any] else { continue }
//print("\(snap.key)")
print(value)
let user = LContact(value: value, searchUserId: snap.key)
self.set.add(user)
if let username = user.username{
self.resultArray.append(username.lowercased())
searchView.reloadData()
}
}
}
})
}
TableViewSource新しいデータを追加する前に? – apineda
@apinedaたとえば、2つの異なるデバイスを使用すると、デバイスAが「users」ノードに追加されていると、デバイスBのユーザーのリストに重複が発生します。重複がなくなる前にデバイスbを再起動します。したがって、基本的に私のクエリは、「users」ノードが別のデバイスから参照されている場合に重複して返されます – SimpiMind