Czy można użyć funkcji niestandardowej (strftime) w grupie według części podczas tworzenia NSFetchRequest w funkcji -c? W SQL jest całkowicie poprawny w SQLite:Dane podstawowe: Czy można użyć funkcji niestandardowej w grupie przez
select date, count(*) from note group by strftime('%Y%m%d', date)
Jednak po dzień kopania i próbuje różnych sposobów i rozwiązań, doszedłem do wniosku, że to niemożliwe, aby to zrobić z danymi podstawowymi w pojedynczym SQL pobierania. Używam NSFetchRequest z setPropertiesToGroupBy (tylko iOS 5.0).
AKTUALIZACJA. Istnieje example za uzyskanie takiego zachowania z danymi podstawowymi dostarczonymi przez Apple. Jednak włączono opcję "-com.apple.CoreData.SQLDebug 1" w celu wyświetlenia kodu SQL wykonanego na podstawie danych podstawowych. Wygląda na to, że dane podstawowe nie wykonują pożądanego kodu SQL. Po prostu wybiera je wszystkie za pomocą pierwszego zapytania sql, a następnie wykonuje pętle w grupach wykonujących wiele zapytań SQL "SELEC .. WHERE IN ...". Fragment konsoli:
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.
Dzięki, spróbuje. Zauważyłem, NSFetchedResultsController często jest używany z delegacją, jest to obowiązkowe lub opcjonalne, aby ustawić delegata NSFetchedResultsController? Czy mogę używać go w taki sam sposób jak NSFetchRequest? – Centurion
Delegat jest opcjonalny. Zobacz dokumentację: 'Instancja NSFetchedResultsController używa metod w tym protokole do powiadomienia swojego delegata, że wyniki pobierania kontrolera zostały zmienione z powodu dodawania, usuwania, przenoszenia lub aktualizacji operacji. Na przykład w UITableView używałbyś go do zaktualizuj wiersze i sekcję po zmodyfikowaniu zestawu danych – Olaf