objective-c - framework - cocoa touch español
¿Cómo puedo conservar una lista ordenada en Core Data? (3)
Esa es una pregunta subjetiva. También puede configurarlos como una lista vinculada en el orden en que los desee.
Estoy escribiendo un método API que devuelve una lista de objetos de un servicio web. Este servicio también almacena resultados en caché e intenta devolver los resultados almacenados en caché (si corresponde) antes de volver a acceder al servicio web. Así que estoy almacenando esta lista en una entidad Core Data. Pero Core Data solo permite que las relaciones to-may se almacenen en un NSSet, lo que no preserva el orden. Pero quiero que los resultados almacenados en caché conserven el orden original (que originalmente era del servicio web). No necesariamente sé cómo se establece ese orden (por lo que no puedo ordenar).
Entonces, ¿cómo puedo preservar esta orden? Mi plan es almacenar una cadena con los identificadores de objeto que luego puedo usar para ordenarlos:
NSString *objectIds = @"1 5 2 9 4";
¿Es esta la mejor manera de hacerlo?
Incluya un campo de Id. De NSNumber propio en el modelo CoreData en el que está almacenando los objetos. La identificación representará el orden que desea conservar; tendrás que configurarlo tú mismo, obviamente. Luego, cuando recuperes los objetos de CoreData, puedes hacerlo ordenado por esa identificación. Es posible que desee / tenga que mantener en algún lugar el valor de identificación más alto que haya asignado para conservar el pedido correctamente con las siguientes llamadas al servicio web y el inicio de la aplicación.
Si puede apuntar a iOS 5, puede usar la nueva función NSOrderedSet para las relaciones de datos centrales ordenados arbitrariamente. Consulte las Notas de versión de Core Data para iOS 5 para obtener más información sobre esta nueva función.
Si tiene que admitir iOS 4, deberá gestionar el pedido usted mismo. Una forma común de hacerlo es agregar una propiedad entera a su modelo, que luego deberá administrar usted mismo. Luego puede ordenar esta propiedad cuando busque sus datos.
Guardar el orden en una secuencia completamente diferente parece ser la forma incorrecta de hacerlo. Si el orden es importante, esta información debe estar en el modelo y el usuario debe poder consultarla directamente ("dame los primeros cinco objetos de esta lista en particular" o "cuál es el índice del objeto foo"). Tener que obtener una cadena de identificaciones de objeto, analizarlo y luego consultar para ciertas ID de objeto me parece muy incorrecto.