5

Estoy trabajando en una aplicación que utiliza la base de datos y un NSFetchedResultsController. La configuración del modelo es la siguiente:sectionNameKeyPath través de varias relaciones

/-----------\   /-----------\   /-----------\ 
|Part  |   |Kit  |   |Source  | 
|-----------|   |-----------|   |-----------| 
|name  |   |name  |   |name  | 
|dimensions |   |description|   |location | 
|...  |   |...  |   |...  | 
|-----------|   |-----------|   |-----------| 
|kits  | <<-\  |source  | <<-----1 |kits  | 
|   |  \->> |parts  |   |   | 
\-----------/   \-----------/   \-----------/ 

Así, un Part tiene una relación muchos-a-cualquier relación con un Kit (una parte puede estar en uno o más equipos, y un kit puede contener una o más partes) . Y cada Kit proviene de una Source que puede proporcionar una o más Kit s.

Actualmente estoy creando un UITableView que utiliza un NSFetchedResultsController con una simple lista de todos los objetos Part. Me gustaría agrupar las partes en secciones, con cada sección siendo un nombre Source. Es decir .:

|-------------------------------| 
|Source One      | 
|-------------------------------| 
|Part One      | 
|Part Two      | 
|Part Three      | 
|-------------------------------| 
|Source Two      | 
|-------------------------------| 
|Part Four      | 
|Part Two      | 
|Part Five      | 
|....       | 
|-------------------------------| 
|    O     | 
|-------------------------------| 

Desde un Part puede provienen de múltiples Source s, ¿es posible hacer esto con un NSFetchedResultsController utilizando el sectionNameKeyPath, o tengo que hacer esto de una manera completamente diferente?

Gracias!

Respuesta

0

Yo no lo creo, porque el NSFetchedResultsController no sabrá lo que Kit utilizar para ordenar Part s por, ya que es una relación de muchos a muchos.

Piense en una vista de árbol, o incluso estructura de herencia de Objective-C, donde cada nodo hijo tiene exactamente un padre, pero sí puede tener muchos nodos hijos. Puede volver a generar fácilmente el árbol desde el nodo secundario hasta su padre. Pero si un niño pudiera tener muchos padres, no conocería intrínsecamente qué padre elegir al reactivar el "árbol" (que ahora se parece más a un gráfico).

Así, en el modelo de datos, hace las Part s tiene que tener muchos Kit s? Porque si cambia los muchos-muchos entre Kit y Part a una relación a muchos, donde un Kit puede tener muchas Part s, sino un Part sólo puede tener un kit, entonces se podría establecer el sectionNameKeyPath en NSFetchedResultsController a @"kit.source.name" para ordenar por nombre, y todo funcionaría bien.

Por supuesto que no sé exactamente cómo funciona la aplicación, si usted realmente necesita una relación muchos-muchos entre Kit y Part, pero si lo hace, entonces probablemente no será capaz de utilizar un NSFetchedResultsController, y tendría que ir a buscar aplicar Source s e implementación de los métodos UITableViewDataSource usted mismo :(