È possibile utilizzare la funzione personalizzata (strftime) in gruppo per parte quando si crea NSFetchRequest in ogg-c? Le istruzioni SQL è perfettamente valido SQLite:Dati principali: è possibile utilizzare la funzione personalizzata nel gruppo di
select date, count(*) from note group by strftime('%Y%m%d', date)
Tuttavia, dopo una giornata di scavare e provare vari modi e le soluzioni sono arrivato alla conclusione che è impossibile farlo con i dati di base in un'unica sql recupero. Sto utilizzando NSFetchRequest con setPropertiesToGroupBy (solo iOS 5.0).
AGGIORNAMENTO. C'è un example per ottenere tale comportamento con i dati principali forniti da Apple. Tuttavia, ho abilitato "-com.apple.CoreData.SQLDebug 1" per mostrare SQL eseguito dai dati principali. Sembra che i dati di base non stiano eseguendo il mio SQL desiderato. Semplicemente li seleziona tutti con una prima query sql, quindi scorre tra i gruppi eseguendo più query "SELEC .. WHERE ID IN ...." SQL. Un estratto dalla console:
2012-07-05 10:34:57.244 DateSectionTitles[1139:fb03] CoreData: sql: SELECT 0, t0.Z_PK FROM ZEVENT t0 ORDER BY t0.ZTIMESTAMP
2012-07-05 10:34:57.245 DateSectionTitles[1139:fb03] CoreData: annotation: sql connection fetch time: 0.0010s
2012-07-05 10:34:57.246 DateSectionTitles[1139:fb03] CoreData: annotation: total fetch execution time: 0.0015s for 52 rows.
2012-07-05 10:34:57.247 DateSectionTitles[1139:fb03] CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZTIMESTAMP, t0.ZTITLE FROM ZEVENT t0 WHERE t0.Z_PK IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ORDER BY t0.ZTIMESTAMP LIMIT 20
2012-07-05 10:34:57.248 DateSectionTitles[1139:fb03] CoreData: annotation: sql connection fetch time: 0.0012s
2012-07-05 10:34:57.249 DateSectionTitles[1139:fb03] CoreData: annotation: total fetch execution time: 0.0022s for 20 rows.
2012-07-05 10:34:57.250 DateSectionTitles[1139:fb03] CoreData: sql: SELECT 0, t0.Z_PK, t0.Z_OPT, t0.ZTIMESTAMP, t0.ZTITLE FROM ZEVENT t0 WHERE t0.Z_PK IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ORDER BY t0.ZTIMESTAMP LIMIT 20
2012-07-05 10:34:57.281 DateSectionTitles[1139:fb03] CoreData: annotation: sql connection fetch time: 0.0303s
2012-07-05 10:34:57.281 DateSectionTitles[1139:fb03] CoreData: annotation: total fetch execution time: 0.0310s for 20 rows.
Grazie, proverò. Avere notato, NSFetchedResultsController viene spesso utilizzato con delega, è obbligatorio o facoltativo impostare NSFetchedResultsController delegato? Posso usarlo allo stesso modo di NSFetchRequest? – Centurion
Il delegato è facoltativo. Vedere la documentazione: 'Un'istanza di NSFetchedResultsController utilizza metodi in questo protocollo per notificare al delegato che i risultati del recupero del controller sono stati modificati a causa di operazioni di aggiunta, rimozione, spostamento o aggiornamento. Per esempio in un UITableView lo si userebbe per aggiorna le righe e la sezione dopo che il set di dati è stato modificato – Olaf