Pregunta

En mi visión de la colección necesito generar un índice para cada elemento.A medida que los artículos se reordenan, necesito este índice para actualizar con su nueva posición.

Los datos son entidades de datos principales en un NSArrayController administrado. Lo más cercano que he llegado a una posible solución está implementando este método en la clase de entidad y luego usando representandobject.dynamicindex para unirlo a la UI.

- (NSNumber *) dynamicIndex
{
    NSInteger r = [[[[self managedObjectContext] registeredObjects] allObjects] indexOfObject:self];
    NSNumber *result = [NSNumber numberWithInt:r];
    return result;
}

Esta solución es incompleta en el mejor de los casos, y no es realmente funcional, ya que no necesariamente refleja el orden en la vista de recolección.

¿Alguien tiene un modelo / mecanismo para generar o recuperar índices de elementos en un índice NSCOLLECTVIEW?

¿Fue útil?

Solución

Primero, asegúrese de comprender la diferencia entre (y usar correctamente la terminología de) "entidad" y "instancia". Hace toda la diferencia en comunicar sus problemas / soluciones con otros.

Segundo: No se preocupe por NSCOLLECTVIEVIETEMES ... preocuparse por el "objeto representado", que se mantiene en algún contenedor.

Tercero: ¿Quería que la pantalla sea un atributo persistente de su entidad o simplemente necesita saber qué posición está el artículo en este momento, independientemente de lo que pueda ser más tarde? Pregunta importante.

Cuarto: los datos básicos no le dan el concepto de colecciones ordenadas. Esto es para admitir tipos de tiendas, como NSSQLITESTORETYYPE, donde quizás quiera fallar en algunos artículos (o uno) sin cargar la lista completa. Por lo tanto, usted está por su cuenta si desea un orden de clasificación persistente. Para hacer esto, solo agregue un atributo a su entidad llamada "Ordenor" y hágala un tipo de número.

quinto: debido a la cuestión de "colecciones no ordenadas" anteriores, su intento de encontrar el índice de una instancia determinada de su entidad de una matriz, construida a partir de un conjunto, que se falla con un orden no determinista está condenado al fracaso .

sexto: Dado que está utilizando un controlador de matriz, deberá establecer sus descriptores de clasificación. Querrás usar la tecla "Sorregistro". De esa manera, sus instancias recuperadas siempre se guardarán ordenadas por su "clasificador".

séptimo y, finalmente: si está tratando de obtener el índice de cualquier objeto en su conjunto / conjunto / matriz de objetos del controlador de matriz , desea preguntarlo por sus aristas, por lo que usted 'Re obteniendo el índice del objeto en la colección ordenada Los controles del controlador de matriz.

espero que ayude.

Actualización para león (10.7)

Con respecto a mi sexto punto: si está dirigido a 10.7 y superior en su solicitud, [NSMANAGEDOBJECTWY ahora le brinda relaciones ordenadas.] [1] Utilice -MutableOrderEdsetValueForey: y -MutableOrderEdsetValueForey: para establecer y recuperar losEstsets. ¡Yay!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top