Có thể sử dụng chức năng tùy chỉnh (strftime) trong nhóm từng phần khi tạo NSFetchRequest trong mục tiêu-c không? Các báo cáo sql là hoàn toàn hợp lệ trong sqlite:Dữ liệu cốt lõi: Có thể sử dụng chức năng tùy chỉnh trong nhóm theo
select date, count(*) from note group by strftime('%Y%m%d', date)
Tuy nhiên, sau một ngày đào và cố gắng cách và các giải pháp khác nhau tôi đi đến kết luận nó không thể làm điều đó với dữ liệu cốt lõi trong sql đơn lấy. Tôi đang sử dụng NSFetchRequest với setPropertiesToGroupBy (chỉ dành cho iOS 5.0).
CẬP NHẬT. Có một số example để nhận được hành vi như vậy với dữ liệu cốt lõi do apple cung cấp. Tuy nhiên, tôi đã bật "-com.apple.CoreData.SQLDebug 1" để hiển thị SQL được thực hiện bởi dữ liệu lõi. Nó xuất hiện, dữ liệu cốt lõi không thực hiện SQL mong muốn của tôi. Nó chỉ chọn tất cả chúng với một truy vấn sql đầu tiên, và sau đó lặp lại thông qua các nhóm thực hiện nhiều truy vấn "SELEC .. WHERE ID IN ....". Đoạn trích từ bảng điều khiển:
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.
Cảm ơn, sẽ cố gắng. Đã nhận thấy, NSFetchedResultsController thường được sử dụng với ủy nhiệm, là bắt buộc hay tùy chọn để thiết lập ủy nhiệm NSFetchedResultsController? Tôi có thể sử dụng nó theo cách tương tự như NSFetchRequest không? – Centurion
Đại biểu là tùy chọn. Xem tài liệu: 'Một thể hiện của NSFetchedResultsController sử dụng các phương thức trong giao thức này để thông báo cho đại biểu của mình rằng kết quả tìm nạp của bộ điều khiển đã bị thay đổi do thêm, xóa, di chuyển hoặc cập nhật hoạt động.' Ví dụ trong UITableView bạn sẽ sử dụng nó cập nhật các hàng và phần sau khi tập dữ liệu đã được sửa đổi – Olaf