2011-03-03 14 views
6

Lo que intento lograr es lo siguiente: Necesito limitar la cantidad de entradas de datos centrales a 50. De modo que si el usuario ingresa su entrada 50, entonces la aplicación eliminaría la entrada más antigua y agregaría la nueva entrada a la parte superior de la pila. Entonces, básicamente, si el usuario nunca elimina las entradas y si hay 50 entradas en los datos centrales, cuando el usuario intente agregar una nueva entrada, la aplicación eliminará la entrada más antigua y agregará la nueva entrada del usuario. Básicamente, estoy tratando de tener un tipo de historia, pero no quiero que el usuario pueda pasar de 50 entradas, sin embargo, quiero que puedan agregar nuevas entradas cuando están en el límite de 50 simplemente dejando caer el el más antiguo y agregando el más nuevo. ¿Cuál sería la forma más fácil de hacer esto? Soy nuevo en los datos básicos y me cuesta entender mucho. Aquí está la aplicación de código/ejemplo con la que estoy trabajando. LINK TO EXAMPLE APP THAT I'M USING Gracias por la ayuda.Cómo eliminar automáticamente las entradas de datos principales más antiguas cuando se alcanza el límite de 50 entradas?

Respuesta

10

Digamos que tiene una entidad llamada History. La solución más fácil sería agregar un atributo creationDate a sus entidades. Luego, úselo para administrar sus objetos History.

Tendrá tres recuperaciones:

  1. el primero será alcanzar un precio de todas las faltas History objetos existentes y luego contarlos. Si el recuento es < 50, simplemente agregue el nuevo objeto History y listo.
  2. Si el recuento es> = 50, haga un fetch for specific value y use el operador de colecciones @max o @min (se me olvida para fechas) para encontrar el más antiguo creationDate. (Como la suerte lo tendría el ejemplo en el enlace, es exactamente lo que necesita).
  3. Realice una búsqueda para el objeto con el creationDate devuelto por (2) y elimínelo.

A continuación, agregue el nuevo objeto de historial.

+0

Gracias @TechZen! Para mayor claridad, las fechas no son más que un número incremental (generalmente en segundos o milisegundos) desde una fecha de referencia fija. Por lo tanto, cuanto menor sea el número, mayor será la fecha. En este caso, el OP querría usar '@" min: "'. – dooleyo

+0

Yo diría que en la mayoría de los casos, querrías usar el día modificado ¿no? –

1

OK, está bien. CoreData no hará esto por usted, pero puede hacerlo usted mismo.

Puede recuperar objetos de su contexto usando un NSFetchRequest, y puede eliminarlos usando -[NSManagedObjectContext deleteObject:]. Puede ordenarlos utilizando objetos NSSortDescriptor.

Cuestiones relacionadas