Tôi đang cố gắng triển khai UITableView được hỗ trợ bởi Core Data hỗ trợ lập chỉ mục (ví dụ: các ký tự xuất hiện bên cạnh và tiêu đề mục đi kèm với chúng). Tôi hoàn toàn không gặp vấn đề khi triển khai tính năng này mà không có Dữ liệu cốt lõi sử dụng:Dữ liệu chính được hỗ trợ UITableView với chỉ mục
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section;
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView;
Tôi cũng không gặp vấn đề gì khi triển khai UITableView được hỗ trợ bởi chỉ mục.
Điều tôi đang cố gắng tìm ra là làm thế nào để kết hợp hai cách thanh lịch? Rõ ràng khi bạn lập chỉ mục và tái phân đoạn nội dung, bạn không còn có thể sử dụng NSFetchedResultsController tiêu chuẩn để truy xuất những thứ tại một đường dẫn chỉ mục đã cho. Vì vậy, tôi đang lưu trữ các chữ cái chỉ mục của tôi trong một NSArray và nội dung được lập chỉ mục của tôi trong một NSDictionary. Điều này tất cả hoạt động tốt để trưng bày, nhưng tôi có một số cơn đau đầu thực sự khi nói đến việc thêm và xóa hàng, đặc biệt là làm thế nào để thực hiện tốt các phương pháp:
- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller;
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath;
- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type;
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller;
Bởi vì những con đường chỉ số nó trở về tôi không có mối tương quan với những người trong dữ liệu cốt lõi. Tôi nhận được thêm làm việc bằng cách xây dựng lại chỉ mục của tôi NSArray và NSDictionary khi người dùng thêm một hàng, nhưng làm như vậy khi họ xóa một tai nạn toàn bộ ứng dụng.
Có mẫu/ví dụ đơn giản nào tôi thiếu ở đây để làm cho tất cả hoạt động này hoạt động đúng không?
Chỉnh sửa: Chỉ cần làm rõ Tôi biết rằng NSFetchedResultsController thực hiện việc này, nhưng điều tôi muốn là sao chép chức năng như ứng dụng Danh bạ, trong đó chỉ mục là chữ cái đầu tiên của tên đầu tiên của người đó.
Tôi nghĩ rằng tôi đã không làm cho bản thân mình đủ rõ ràng. Tôi muốn các chỉ mục của tôi giống như ứng dụng Liên hệ, chữ cái đầu tiên của tên người đầu tiên. – rustyshelf
Vì vậy, tại sao không sử dụng tên đầu tiên khi sectionNameKeyPath hoạt động? – gerry3
sectionNameKeyPath! ??!?! ??! Làm thế nào tôi đã bỏ lỡ điều đó! Wow hoạt động rực rỡ. Tôi nên đọc doco tốt hơn trước khi mã hóa của riêng tôi ... đã trở lại với nó và nó làm việc một cách ngọt ngào. Tôi sẽ cung cấp cho bạn +5000 nếu tôi có thể;) – rustyshelf