swift - remove - cómo leer la base de datos de firebase
leer datos firebase android (2)
Esta es mi estructura de datos: muchos clubes, cada club tiene dirección. Traté de hacer la base de datos plana.
Ahora quiero cargar algunos datos del club en la vista de tabla. Cuando deslizo la pantalla del iPhone, se cargará la siguiente información del club.
Este es mi código Pero carga toda la información del club. ¿Cómo puedo cargar solo algunos garrotes y cargar unos cuantos garrotes cuando el usuario desliza el dedo hacia abajo?
func loadClubs() {
ref = Database.database().reference()
ref.child("club").observe(DataEventType.value, with: { (snapshot) in
//print("clubs: /(snapshot)")
let array:NSArray = snapshot.children.allObjects as NSArray
for obj in array {
let snapshot:DataSnapshot = obj as! DataSnapshot
if let childSnapshot = snapshot.value as? [String: AnyObject] {
if let clubName = childSnapshot["name"] as? String {
print(clubName)
}
}
}
})
}
Creo que el camino correcto hace referencia a un conjunto de elementos y hace variable para el índice
var i = 0;
var club = null;
club = loadClubs(index); // here should return club with specified index;
// and increment index in loadClubs func,
// also if you need steped back --- and one more
// argument to function, for example
// loadClubs(index, forward) // where forward is
// boolean that says in which way we should
// increment or decrement our index
entonces en tu ejemplo será algo como esto:
func loadClubs(index, forward) {
ref = Database.database().reference()
ref.child("club").observe(data => {
var club = data[index];
if(forward){
index ++
}else{
index--
}
return club;
})
}
Las consultas de Firebase admiten paginación, pero es ligeramente diferente de lo que estás acostumbrado. En lugar de trabajar con compensaciones, Firebase utiliza los denominados valores de anclaje para determinar dónde comenzar.
Obtener los artículos para la primera página es fácil, solo debe especificar un límite para la cantidad de elementos a recuperar:
ref = Database.database().reference()
query = ref.child("club").queryOrderedByKey().limitToFirst(10)
query.observe(DataEventType.value, with: { (snapshot) in
Ahora dentro del bloque, haga un seguimiento de la clave del último elemento que le mostró al usuario:
for obj in array {
let snapshot:DataSnapshot = obj as! DataSnapshot
if let childSnapshot = snapshot.value as? [String: AnyObject] {
lastKey = childSnapshot.key
if let clubName = childSnapshot["name"] as? String {
print(clubName)
}
}
}
Luego, para obtener la siguiente página, construya una consulta que comience en la última clave que haya visto:
query = ref.child("club").queryOrderedByKey().startAt(lastKey).limitToFirst(11)
Tendrá que recuperar un elemento más que el tamaño de su página, ya que el elemento de anclaje se recupera en ambas páginas.