He estado tratando de resolver un misterio en los últimos días sobre por qué mi NSFetchedResultsController con un tamaño de lote de 20 siempre fallaría (es decir, cargaría en la memoria) todos mis objetos inmediatamente cuando la búsqueda finalizó, lo que provocó que la solicitud tardara aproximadamente 20 segundos.Altura UITableView con objetos de Datos Core
Resulta que en mi heightForRowAtIndexPath, la altura se basaba en la longitud de una propiedad NSString de cada objeto recuperado, por lo que al volver a cargar la tabla, si la tabla tiene 2000 filas, se calcula la altura para cada fila al principio, y como accedo a una propiedad de texto del objeto, fallaría en 2000 objetos (en 20 lotes de tamaño) desde el principio, lo que provocaría que durara para siempre. (No sabía que las alturas de las hileras se calcularon todas al principio).
Así que la pregunta es si tengo un controlador de resultados de búsqueda con un tamaño de lote de 20, pero mis alturas de fila se basan en una propiedad de texto del objeto, que si intento acceder causaría que el objeto no sea ya no es un error pero en realidad se cargó en la memoria, ¿cuál sería una solución para calcular la altura?
¿Cuáles son mis opciones?
¿Qué sucede si comprueba si el objeto es un error, si es así, devuelve un tamaño arbitrario, de lo contrario, obtenga la cadena y calcule? ¿El método se llama nuevamente cuando la celda entra para ver? Solo estoy adivinando aquí. Eso o implementar una carga lenta (es decir, se agregan nuevas filas a medida que se desplaza) parecen ser sus únicas opciones. – jrturton
No se llama a heightForRow al comienzo de una recarga y no se llama cada vez que aparece una celda (como cellForRow). Eso es lo que estaba pensando también, pero no creo que funcione. – Snowman
Pensé que sonaba muy fácil. – jrturton