8

Tengo una entidad Order con la propiedad paid, que es un booleano.sectionNameKeyKey con NSFetchedResultsController no funciona

Quiero mostrar todos los pedidos en un UITableView, pero quiero agruparlos en dos secciones: 'No pagado' y 'Pagado'. Así que pensé que solo daría "pagado", como sectionNameKeyPath, así:

fetchedResultsController = [[NSFetchedResultsController alloc] 
     initWithFetchRequest:fetchRequest 
     managedObjectContext:managedObjectContext 
      sectionNameKeyPath:@"paid" 
        cacheName:nil]; 

De acuerdo con mi razonamiento, esto resultaría en dos secciones, donde la primera sección contiene todos los pedidos pagados con = NO (0) y la segunda sección con paid = YES (1).

Pero cuando agrego un nuevo pedido con paid = YES, aparece en la primera sección. Cuando controlo el delegado del controlador de resultados obtenidos, ¡puedo ver que se crea un nuevo registro con indexPath [0,0]! ¿Por qué no se inserta en la segunda sección?

Respuesta

12

intente agregar una matriz de descriptores de clasificación a NSFetchRequest que se utiliza con NSFetchedResultsController.

Primero querrá ordenar el booleano pagado, luego cualquier otra cosa que desee ordenar.

Swift 3 ejemplo:

fetchRequest = ... // <- instantiate your fetch request 

let sortByPaid = NSSortDescriptor(key: "paid", ascending: true) 
let sortByCustomerName = NSSortDescriptor(key: "customer.name", ascending: true) // <- if Order had a relationship to Customer that had an attribute name 
fetchRequest.sortDescriptors = [sortByPaid, sortByCustomerName] 

// now instantiate fetchedResultsController as in the question above 
+0

usted es el jefe! – raed

+0

Además, el descriptor de ordenación agregado (si es único) debe ser diferente del utilizado para generar la ruta clave – jackal

+0

Entonces, ¿cuál es en realidad la respuesta para ese problema? ¿Qué debería hacer exactamente? –

Cuestiones relacionadas