2011-08-08 23 views
6

Tôi có tìm kiếm sản phẩm tìm kiếm ProductCategories sản phẩm của tôi, đôi khi sản phẩm của tôi thuộc nhiều danh mục mang lại cho tôi kết quả trùng lặp. Tôi không muốn tìm kiếm trực tiếp bảng sản phẩm vì có một số sản phẩm có nhiều kích thước nhưng về cơ bản là cùng một sản phẩm.có thể nhận được kết quả riêng biệt khi sử dụng NSFetchedResultsController không?

Có cách nào để nhận kết quả tìm kiếm riêng biệt với NSFetchedResultsController không?

Trả lời

11

Có bạn có thể ...

tìm cho ra phương pháp

- (NSFetchedResultsController *)fetchedResultsController; 

và thêm có những dòng sau (trong ví dụ này, chúng tôi chỉ nhận được sự khác biệt "title" thuộc tính của các đối tượng quản lý của chúng tôi) :

[fetchRequest setReturnsDistinctResults:YES]; 
[fetchRequest setResultType:NSDictionaryResultType]; 
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObject:@"title"]]; 
self.fetchedResultsController.delegate = nil; 

bạn phải chăm sóc như thế nào bạn truy cập vào các giá trị từ các NSFetchedResultsController ... Ví dụ trong

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

sử dụng đoạn mã sau để truy cập dữ liệu:

NSDictionary* title = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
cell.textLabel.text = [title objectForKey:@"title"]; 
0

Bạn sẽ cần phải sử dụng một NSPredicate (Xem Predicate Programming Guide)

Đó là phức tạp, nhưng bạn có thể làm điều đó bằng một subquery

+0

ferdil - Bạn có thể xây dựng câu trả lời của mình không? – NSPratik

-1

Khi tạo của bạn NSFetchRequest bạn có thể sử dụng -setReturnsDistinctResults: và đặt nó vào YES.

+0

để sử dụng mà bạn cũng phải đặt setResultType: NSDictionaryResultType mà NSFetchedResultsController không giống như – Slee

+0

@Slee: Để chính xác hơn: FRC không hỗ trợ NSDictionaryResultType. –

8

Bên cạnh những giải pháp mà Shingoo cung cấp, xin đừng quên thiết các NSFetchedResultsController củađại biểu để nil theo thứ tự để tắt cập nhật tự động, thao tác này sẽ không hoạt động với NSDictionaryResultType và các giá trị khác biệt:

self.fetchedResultsController.delegate = nil; 
Các vấn đề liên quan