2012-05-07 21 views
16

Tôi có một danh sách các tác vụ trong Dữ liệu chính. Tôi lấy chúng vào một UITableView bằng cách sử dụng một NSFetchedResultsController.Phần thoáng quaNameKeyPath & NSSortDescriptor NSFetchedResultsController

Tôi cần phần tùy chỉnh theo một thứ tự tùy chỉnh:

  1. QUÁ HẠN
  2. ACTIVE
  3. ĐANG THỰC HIỆN
  4. HOÃN
  5. HOÀN THÀNH

Để xác định những phần một nhiệm vụ nên đi trong tôi sử dụng một thuộc tính tạm thời có nguồn gốc tính trên t ông bay dựa trên các thuộc tính khác trong đối tượng tương đối.

Rất tiếc, bạn không thể chuyển giá trị dẫn xuất dưới dạng bộ mô tả sắp xếp được yêu cầu tìm nạp sử dụng. Điều này là do tìm nạp dựa trên đã có dữ liệu mà nó đang được yêu cầu tìm nạp. Gà & Trứng.

Tôi hiểu tại sao tôi không thể làm điều đó, điều đó không giúp tôi giải quyết vấn đề!

Tôi đã thử:

  • subclassing NSFetchedResultsController để 'customise creation of sections and index titles'. Có lẽ tôi đang làm điều này sai tuy nhiên điều này chỉ thay đổi tên và đơn đặt hàng của các phần, không có bao nhiêu điều đi trong những phần (đó là quan trọng).

  • Nhập các mảng cho mỗi phần và đưa chúng vào bảng (clunky, chậm nhưng hoàn toàn hoạt động).

  • Tách ra liên tục & các tác vụ bị trì hoãn (hoạt động nhưng không lý tưởng). Bằng cách này tôi có thể sắp xếp theo DueDate và lái xe sectionNameKeyPath thông qua các giá trị thoáng qua.

Có ai có ý tưởng nào tốt hơn không? Có một vài câu hỏi đã được như thế này nhưng không ai trong số họ đến một giải pháp gọn gàng.

Cảm ơn trước!

Cheers

+3

Một tùy chọn có thể là - nếu bạn đã tìm nạp tất cả tác vụ từ dữ liệu cốt lõi - có thể bạn có thể tiết kiệm thêm thuộc tính cho từng tác vụ - và nếu thay đổi tác vụ "trên bay" - nó cũng có thể được cập nhật trong Dữ liệu cốt lõi - - với hoạt ảnh được định vị lại trong phần chính xác bằng controllerWillChangeContent: delegate methods? Hay tôi đang thiếu một cái gì đó? –

Trả lời

10

Giải pháp đơn giản nhất là thêm một 'phần' thuộc tính dai dẳng (hoặc chuyển đổi thuộc tính thoáng hiện tại của bạn). Đặt nó thành một tập hợp các giá trị có thể sắp xếp (mà bạn hiển thị trong thời gian chạy bằng cách sử dụng tên bạn muốn). Bất cứ khi nào bạn cập nhật bất kỳ bản ghi nào, hãy tính lại và lưu trữ thuộc tính phần là tốt.

Tôi nhận ra điều này nghe có vẻ như bạn đang lưu trữ thông tin thừa nhưng bên cạnh việc làm cho logic của bạn đơn giản hơn, nó cũng sẽ có thể lập chỉ mục để tăng tốc độ truy cập.

+0

Xin chào Denis, cảm ơn bạn đã trả lời. Khi thay đổi ngày sẽ di chuyển các mục vào các phần khác nhau, tôi tự hỏi làm thế nào tôi sẽ kiểm tra/thay đổi thuộc tính phần hiệu quả? – Timbo

+0

Câu trả lời này + Guntis Treulands 'bình luận về câu hỏi của tôi hoạt động tuyệt vời :) – Timbo

Các vấn đề liên quan